如何使用sequelize和sqlite创建连接表?

时间:2014-12-08 03:34:01

标签: join sqlite sequelize.js

我正在尝试使用sequelize在sqlite中建立表之间的多对多关系。 我想将记录添加到连接表(将任务分配给用户)并从该表中检索数据。出于某种原因,这不起作用。这是我的代码:

var orm = new Sequelize('db_name', '', '', {
  dialect: 'sqlite',
  storage: path.join(__dirname, 'db_name')
});

var User = orm.define('User', {
  username: {type: Sequelize.STRING, unique: true}
});

var Task = orm.define('Task', {
 id: {type: Sequelize.STRING, unique: true},
 taskName: Sequelize.STRING
});

Task.hasMany(User);
User.hasMany(Task);

Task.sync();
User.sync();

阅读文档(http://sequelize.readthedocs.org/en/latest/api/associations/#hasmanytarget-options)后,我希望应该创建一个连接表TasksUsers。我也期望.addTask方法可用。然后在另一个文件中:

db.User.findOrCreate({where:{username: "fakeUser"}}); //this seems to work
//some code to populate "Tasks" table;

db.User.find({where: {username: "fakeUser"}}).
  complete(function(err,user){
    console.log("user", user); //the user is found
    db.Task.find({where: {id: "some_value"}}).
      complete(function(err, task) {
        console.log("task", task); //the task is found, so it works up to this point
        user.addTask(task). //this line does not work
          complete(function(err, results){
            console.log("posting error", err);
          });    
      })
  });

我收到错误"可能未处理SequelizeDatabaseError:错误:SQLITE_ERROR:没有这样的表:TasksUsers"。 user.getTasks()方法(括号中没有任何参数)由于同样的原因不起作用。

另一个观察结果:出于测试目的,我在建立hasMany关系后添加了这些代码行:

orm.query("SELECT name FROM sqlite_master WHERE type = 'table'").success(function (res) {
    console.log("tables", res);
  })

我得到的结果是表格['任务','用户' ]

版本:sequelize 2.0.0-rc2,sqlite3 3.0.4。我会非常感谢任何帮助。

0 个答案:

没有答案