Sequelize关系帮助器方法在插入后立即返回null

时间:2019-01-04 18:17:40

标签: node.js sequelize.js

我目前在代码中遇到一个奇怪的问题,即关于序列关联的问题。我定义了以下关系:

Recipe.associate = function (models) {
    Recipe.belongsTo(models.User)
}

User.associate = function (models) {
    User.hasMany(models.Recipe)
}

仅当使用recipe.getUser()检索配方时,才能使用Recipe.findById(id)获得相关模型。但是,如果我使用以下方法插入食谱后立即尝试recipe.getUser()

const recipe = await Recipe.create({ userId, title, ingredients, direction})
const user = await recipe.getUser()
console.log(user)

这将返回null,我无法理解为什么会这样。

2 个答案:

答案 0 :(得分:0)

我的猜测是console.log(user)在用户从配方.getUser()获取响应之前执行。

也许尝试一下:

const recipe = await Recipe.create({ userId, title, ingredients, direction})
const user = await recipe.getUser()
.then(data => {
    console.log(data);
});

答案 1 :(得分:0)

我解决了。 Seauelize在其命名约定下做了一些魔术。因此,就我而言,它正在我的Dictionary模型上寻找[T: Void]列(因为我将模型定义为UserId,因此我将其定义为User。因此,我需要做的就是在定义关联时明确指定正确的列:

Recipe

如果有人遇到这个问题,我必须把它放在这里。