![](/img/trans.png)
[英]Association model not showing in many to many association sequelize.js node
[英]Sequelize.js node.js many to many association
我正在使用sequelize node.js模塊在Postgres sql中形成架構
我有以下兩個Project和我的用戶架構。
項目
module.exports = function(sequelize, DataTypes) {
var project = sequelize.define('project', {
description: DataTypes.STRING
},{
classMethods: {
associate: function(models) {
project.hasMany(models.myusers,{through:"project_persons"});
}
}
});
return project;
};
我的用戶
module.exports = function(sequelize, DataTypes) {
var myusers = sequelize.define('myusers', {
name: DataTypes.STRING
},{
classMethods: {
associate: function(models) {
myusers.hasMany(models.project,{through:"project_persons"});
}
}
});
return myusers;
};
我試圖建立多對多的關系。 當我運行應用程序的第三個表“ project_person已創建”時。
index.js(路由),我有以下代碼
models.myusers.create({
description:"newuser"
}).success(function(user) {
var project1;
var project2;
models.project.create({
description:"p1"
}).success(function(p1){
console.log("Project 1 created");
project1 = p1;
});
models.project.create({
description:"p2"
}).success(function(p2){
console.log("Project 2 created");
project2 = p2;
});
user.setProjects([project1,project2]).success(function() {
console.log("CREATION SUCESS");
});
});
在屏幕上給我以下錯誤
/home/hassan/Desktop/node/node_modules/sequelize/lib/associations/has-many-double-linked.js:151 foreignIdentifier] =(((targetKeys.length === 1)?unassociatedObject [targetKey ^ TypeError:無法讀取在/home/hassan/Desktop/node/node_modules/sequelize/lib/associations/has-many-double-linked.js:151:88在module.exports.HasManyDoubleLinked的Array.map(native)處未定義的屬性'id' .injectSetter(/home/hassan/Desktop/node/node_modules/sequelize/lib/associations/has-many-double-linked.js:147:38)在實例上。(匿名函數).success.proxy.events(/ home /hassan/Desktop/node/node_modules/sequelize/lib/associations/has-many.js:317:39)在event.mitter.emit(events.js:95:17)在module.exports.CustomEventEmitter.emit(/ home / hassan / Desktop / node / node_modules / sequelize / lib / emitters / custom-event-emitter.js:107:33)為null(/ home / hassan / Desktop / node / node_nodes / sequelize / lib / associations / has-many -double-linked.js:74:63)在module.exports.CustomEventEmi處的EventEmitter.emit(events.js:95:17) tter.emit(/home/hassan/Desktop/node/node_modules/sequelize/lib/emitters/custom-event-emitter.js:107:33)在generator.query.success.error.proxy.events(/ home / hassan /Desktop/node/node_modules/sequelize/lib/query-interface.js:890:19)24 Apr 10:31:47-[nodemon]應用程序崩潰-等待文件更改,然后再開始...
誰能告訴我我要去哪里錯了。
Sequelize是一個異步庫,因此您必須使用回調。 這應該可以按預期工作:
models.myusers.create({ description: "newuser" }).success(function(user) {
models.project.create({ description: "p1" }).success(function(project1) {
console.log("Project 1 created");
models.project.create({ description: "p2" }).success(function(project2) {
console.log("Project 2 created");
user.setProjects([ project1, project2 ]).success(function() {
console.log("CREATION SUCESS");
});
});
});
});
更好的是:正確使用complete()
和錯誤(如果有):
models.myusers.create({ description: "newuser" }).complete(function(err, user) {
if (err) throw err;
models.project.create({ description: "p1" }).complete(function(err, project1) {
if (err) throw err;
console.log("Project 1 created");
models.project.create({ description: "p2" }).complete(function(err, project2) {
if (err) throw err;
console.log("Project 2 created");
user.setProjects([ project1, project2 ]).complete(function(err, association) {
if (err) throw err;
console.log("CREATION SUCESS");
});
});
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.