【发布时间】:2016-10-04 15:07:35
【问题描述】:
我在 Sequlize 中有用户和文件模型。用户可以有多个文件。 我有协会 db.User.hasMany(db.File, {as: 'Files', foreignKey: 'userId', 约束: false});
我想用几个文件初始化用户对象并将其保存到数据库。
我写了下一段代码:
var files = [];
var file1 = models.File.build();
file1.name = "JPEG";
file1.save().then(function () {
});
files.push(file1);
var file2 = models.File.build();
file2.name = "PNG";
file2.save().then(function () {
});
files.push(file2);
var newUser = models.User.build();
newUser.email = email;
newUser.save().then(function (usr) {
files.forEach(function (item) {
newUser.addFile(item);
});
});
但我发现了一个错误,有时有几个文件没有与用户关联。
我发现(在 nodejs 日志中)用于为这些文件设置外键的命令(更新)。 但是没有执行命令。多个文件的外键(userId)为空。
我认为问题出在异步查询中。 如何组织代码结构来避免这个bug?
【问题讨论】:
-
为什么不在用户后面创建文件,并在文件定义中添加用户ID?
标签: javascript node.js postgresql sequelize.js