2017-02-28 33 views
0

我試圖創建一個多到許多使用關係sequelize,但每次我嘗試使用此功能:Sequelize多到許多錯誤:user.addProjects不是一個函數

user.addProject(project, { through: { status: 'started' }}) 

我的服務器死機了,我得到這個錯誤:

user.addProjects is not a function at User.create.then.user

var connection = new Sequelize('database', 'root', 'phase_99'); 

    var User = connection.define('user', {title: Sequelize.STRING}); 
    var Project = connection.define('project', {title: Sequelize.STRING}); 
    var UserProjects = connection.define('userProjects', { 
     status: Sequelize.STRING 
    }) 

    User.belongsToMany(Project, {as: 'Workers', through: UserProjects, foreignKey: 1 }) 
    Project.belongsToMany(User, { as: 'Tasks', through: UserProjects, foreignKey: 1 }) 


    connection.sync().then(() => { 
    var project = Project.create({title: 'ISD Corp'}) 

    User.create() 
     .then(user => { 

     user.addProject(project, { through: { status: 'started' }}) 

     }) 
    }); 

我不知道我做錯了,我也跟着文檔,而這個功能是假設自動生成

回答

2

sync()後,您的代碼應該如下

connection.sync().then(() => { 
    Project.create({ title: 'ISD Corp' }).then((project) => { 
     User.create().then((user) => { 
      user.addTask(project, { status: 'started' }).then(() => { 
       // finished 
      }); 
     }); 
    }); 
}); 

由於您已經使用了as屬性在belongsToMany,你添加項目到用戶的方法現在被稱爲addTaskaddTasks(在多任務情況下的事實立刻)。

在您的代碼中,project變量是Promise您試圖在addProject方法中使用的實例 - 這是它無法運行的第一個原因。其次,在addProject中爲了添加附加屬性來連接表,您不需要使用through對象。

相關問題