Sequelize object.add not returning id?



我将Sequelize 3.27.0与NodeJS 6.7.0和Sqlite 3一起使用。

我有一段"多对多"的关系,并试图建立一段新的关系,但在这样做的过程中,我没有看到任何id返回。我创建了一个简单的测试用例,试图了解我可能做错了什么。有人能指出我做错了什么吗:

var User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
}
});
var Project = sequelize.define('project', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
}
});
var UserProject = sequelize.define('user_project', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
role: Sequelize.STRING,
});
User.belongsToMany(Project, { through: UserProject });
Project.belongsToMany(User, { through: UserProject });
sequelize.sync({}).then(function () {
var userX;
User.create({}).then(function (user) {
userX = user;
return Project.create({});
}).then(function (project) {
return userX.addProject(project);
}).then(function (userProject) {
console.log(userProject.id);
});
});

正如您所看到的,UserProject的id确实将"autoIncrement"设置为true。对于id的值,运行上述操作的结果是"未定义"。

虽然我还没有找到具体的答案,但我找到的最好的答案是"UserProject"表应该被视为"映射表",因此条目实际上不需要不同的ID。

这意味着表条目只有在与源表或目标表结合使用时才有意义。它的存在只是为了定义一个关联,因此当出现"与"类型错误时值得注意。

最新更新