gpt4 book ai didi

javascript - Sequelize findOrCreate(...).spread 不是函数

转载 作者:行者123 更新时间:2023-12-03 22:16:48 27 4
gpt4 key购买 nike

我正在使用sequelize 6。当我运行findOrCreate().spread时它说“findOrCreate(...).spread 不是一个函数”。这是我的代码:

const response = await Response.findOrCreate({
where: {
participantId,
questionId,
},
defaults: responseNewDetail,
})
return res.status(200).send({ status: 0, data: response })
这工作正常,但它没有将创建的状态和模型值分开。
当我尝试使用传播时:
Response.findOrCreate({
where: {
participantId,
questionId,
},
defaults: responseNewDetail,
}).spread(function(response,created){
return res.status(200).send({ status: 0, data: response })
})
它说“Response.findOrCreate(...).spread 不是函数”。
这是模型文件(response.js):
const { Sequelize } = require("sequelize")

module.exports = (sequelize, DataTypes) =>
sequelize.define(
"Response",
{
responseId: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
field: "Response_ID",
autoIncrement: true,
},
companyId: {
type: DataTypes.INTEGER,
allowNull: false,
field: "Company_ID",
},
...
)
响应模型:
const ResponseModel = require("../models/response")
const Response = ResponseModel(sequelize, DataTypes)
有谁知道出了什么问题?

最佳答案

由于您使用的是等待,因此您可以更改:

const response = await Response.findOrCreate({
where: {
participantId,
questionId,
},
defaults: responseNewDetail,
})
return res.status(200).send({ status: 0, data: response })
const [ response, created ] = await Response.findOrCreate({
where: {
participantId,
questionId,
},
defaults: responseNewDetail,
})
return res.status(200).send({ status: 0, data: response })
一切都会好起来的。
不过,这并没有解决传播而不是功能的问题。为此,我只在从旧版本升级 sequelize 时才注意到这一点(我从版本 1 开始就一直在使用 sequelize)。您的传播示例确实应该有效,但无论出于何种原因它不再起作用(它也不适合我)。通常我唯一一次使用传播而不是等待它是当我想推迟执行某些事情时。对或错,我已经开始解决这个问题,只需将 await/async 版本包装在:
setImmediate(async () => {
// async things here
});
希望我有所帮助,如果我没有,对不起。

关于javascript - Sequelize findOrCreate(...).spread 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63368787/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com