Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Sequelize.js belongToMany实例方法创建不起作用?_Javascript_Postgresql_Sequelize.js - Fatal编程技术网

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})