Javascript Sequelize.js belongToMany实例方法创建不起作用?
我的模型:Javascript Sequelize.js belongToMany实例方法创建不起作用?,javascript,postgresql,sequelize.js,Javascript,Postgresql,Sequelize.js,我的模型: 'use strict'; module.exports = function(sequelize, DataTypes) { var Entity; return Entity = sequelize.define('Entity', { name: { type: DataTypes.STRING, allowNull: false } }, { classMethods: { associate: func
'use strict';
module.exports = function(sequelize, DataTypes) {
var Entity;
return Entity = sequelize.define('Entity', {
name: {
type: DataTypes.STRING,
allowNull: false
}
}, {
classMethods: {
associate: function(models) {
return Entity.belongsToMany(models.User);
}
}
});
};
及
我想创建一个用户,然后将一个实体附加到该用户,因此我正在执行以下操作:
newUser = {
name: req.body.name,
email: req.body.email,
username: req.body.username,
password: req.body.password
};
global.db.User.create(newUser).then(function(dbUser) {
var newEntity;
newEntity = {
name: newUser.name + " Default Entity"
};
console.log(dbUser);
return dbUser.createEntity(newEntity);
}).then(function(dbEntity) {
return console.log(dbEntity);
});
但是我得到一个错误:[TypeError:Object[Object SequelizeInstance]没有方法'createEntity']
这是使用Sequelize
v2.0.0-rc8
我做错了什么?dbUser是一个实例,因此
dbUser.createEntity()
正在调用dbUser
实例上的实例方法createEntity()
。这是不存在的
正确的解决方案是在实体
模型上调用create
,将UserId
字段设置为dbUser.id
。比如说:
global.db.Entity.create({name: 'blah blah blah', UserId: dbUser.id})
(你可能不得不胡乱修改大写字母)
另外,我认为您可能需要
User.hasMany(models.Entity)
,但这只是让我措手不及的事情。但是dbUser
确实存在。它是在以下行中创建的:global.db.User.create(newUser)。然后(function(dbUser){
。belongTomany
是新的,应该处理这个问题。@Shamoon他试图告诉你dbUser没有方法#createEntity()
。createEntity()
方法被注入到您的模型中,它将是User
。您的'dbUser'是该模型的dao实例,它只有#getEntity
和#setEntity
方法。createEntity
实际上应该存在,:M
在Sequelize支持中的关联createAssociation
global.db.Entity.create({name: 'blah blah blah', UserId: dbUser.id})