当前位置: 首页 > 知识库问答 >
问题:

等待总是thowsSynTaxError:等待是唯一有效的异步函数在序列化[重复]

赵飞雨
2023-03-14

Ubuntu 20
节点12.18。4
npm6.14。6
续集6.3。5.

我遵循官方指南,现在感到很困惑
成功配置Sequelize并连接后,我尝试运行(来自官方文档)

await sequelize.authenticate();

它抛出SyntaxError:await仅在异步函数中有效

在正式开始页面https://sequelize.org/master/manual/getting-started.html,它清楚地指出:

Sequelize提供的大多数方法都是异步的,因此会返回Promises。它们都是Promise,所以您可以开箱即用Promise API(例如,使用然后、捕捉、最后)。
当然,使用异步和等待也可以正常工作。

共有2个答案

艾灿
2023-03-14

你必须像这样使用异步函数

getStateById: async (req, res) => {
              ^^^^^^

    sequelize.sequelize.transaction(async (t1) => {

        let state = await sequelize.state.findOne({
            where: {
                id: req.params.id
            }
        });

        let result = error.OK;
        result.data = state;

        logger.info(result);
        return res.status(200).send(result);
    }).catch(function (err) {
        logger.error(err);
        return res.status(500).send(error.SERVER_ERROR);
    });
}

当你想在你的应用程序中使用wait时,async是必需的,它将只在async函数类型中使用

谷星文
2023-03-14

这意味着在函数中,如果必须等待,则需要声明异步外部函数:

async function() {
     await sequelize.authenticate();
}

const nameYourFunction = async () => {
     await sequelize.authenticate();
}

记住在wait之前声明async,或者如果不想声明async wait,可以使用promise

const nameYourFunction = () => {
  sequelize
    .authenticate()
    .then((result) => {
      console.log('nameYourFunction -> result', result);
    })
    .catch((error) => {
      console.log('nameYourFunction -> error', error);
    });
};
 类似资料:
  • 我在中写了这段代码 然后我尝试在另一个文件中使用它 我得到一个错误 “等待仅在异步函数中有效” 问题是什么?

  • 我正在研究promsies和async/await的用法。 我编写了以下代码,它执行以下操作: 它获取一些数据库数据(使用Knex.js), 处理该数据, 将处理的数据分配到指定的属性中 这3个步骤执行了多次(在下面的代码中,执行了两次),并且始终等待执行: 现在,我正在尝试编写与等效的promise链,这就是我想到的: 但这不太管用。发生的是,在第一个返回之后,中的结束了它的等待,这导致返回-并

  • 我正试图将图像上传到firebase存储,但调用该函数时,未执行wait以获取url。我错过了什么? 看看这个其他主题,我发现问题可能是“然后”,但我如何设置代码以等待url? 异步/等待/然后飞镖/颤振 谢谢

  • 我正在尝试将数据库调用移出控制器,以清理并使其可测试。当它们在控制器中时,一切都会顺利进行。我将它们移出控制器,并添加了一个异步,以确保我们等待。否则,我将调用的中的函数。现在,一旦我使用async/await,控制器中的函数就会认为没有用户,因为它没有等待。 有几个关于异步等待的SO问题,但我没有找到一个解决我的问题。我确实验证了返回了我的用户,并添加了控制台日志来显示路径。 节点猫鼬异步等待似

  • 我试图在react/electron项目中使用async/await,但它不起作用。我想要的是获取docker容器状态列表。但是安慰。日志(列表)返回未定义的。 有人能帮我吗?:)

  • 问题内容: 我是一名普通的C#开发人员,但有时我会使用Java开发应用程序。我想知道是否有Java等效于C#async / await?简单来说,java相当于什么: 问题答案: 不,在Java中-甚至在v5之前的C#中,都没有等效的异步/等待方式。 在后台构建状态机是一项相当复杂的语言功能。 Java中对异步/并发的 语言 支持相对较少,但是该软件包包含许多与此相关的有用 类 。(不完全等同于任