续集查找或创建与包含关联
sequelize findOrCreate with include association
使用续集,我有两个具有关联的模型:
var Assessment = sequelize.define("Assessment", {
name: DataTypes.STRING
});
var User = sequelize.define("User", {
sid: DataTypes.STRING
});
Assessment.belongsTo(User);
User.hasMany(Assessment);
经过一些应用程序逻辑,我有一个User
:
User.findOrCreate( { where: {sid: "123"} } ).spread(function (user, created) {
// user is a User
});
在这一点上,我无法续集将用户关联为Assessment.findOrCreate
的一部分。 此代码将在数据库中创建新的评估记录(如果不存在),但它不会包含 User 密钥作为记录的一部分(而只是 NULL):
Assessment.findOrCreate( {
where: { },
include: [ { model: User, where: user.primaryKeyValues } ]
} ).spread( function (assessment, created) {
// ...
});
我有一个解决方法,通过添加:
assessment.setUser(user).then( function(assessment) {
...
});
。但是,这会导致 SQL 更新,该更新应该只是创建记录的一部分。 我相当确定应该有办法做到这一点,但在文档中找不到任何东西/所以/等等。
试试这个:你需要将User
主键引用设置到创建的评估中。
Assessment.findOrCreate( {
where: { UserId: user.id },
include: [ User ]
} ).spread( function (assessment, created) {
// assessment should contain a User property with the previously found / created user
});
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 货币代码为欧元-金额的格式不应包含小数
- 如何包含特定于每个视图angularjs的javascript文件
- 我如何修复包含在captcha的addthis中的错误
- 正在注入包含JS的HTML
- Json数据包含日期和时间格式
- Angular js-返回一个包含类似
- jQuery/JS包含运算符或类似运算符
- 如果href包含X,请更改href
- JavaScript数组包含一个值
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- 在Meteor项目中安装并包含npm模块后出错
- 传递包含'%的参数'在URL中
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- 如何首先设置样式<td>表中包含在窗体中的元素
- 续集查找或创建与包含关联
- 如何在节点中有多个关联/条件/包含.js在 findAll 上续集
- 如何包含对象/关联数组到对象(js)
- 如何静态声明一个属性名(键)包含破折号的Javascript对象实例(关联数组)?
- 水线包含一个关联属性