如何在 Sequelize 中使用关联
How to work with associations in Sequelize
我正在尝试理解Sequelize,但我在联想方面遇到了小问题。请看下面的代码:
用户型号:
var Sequelize = require("sequelize");
module.exports = function (sequelize) {
var User = sequelize.define('user', {
id:{ type:Sequelize.INTEGER.UNSIGNED, autoIncrement:true, allowNull:false, primaryKey:true},
name:{ type:Sequelize.STRING(50), defaultValue:''},
email:Sequelize.STRING(50),
password:Sequelize.STRING(256)
});
return User;
};
截止日期模型:
var Sequelize = require("sequelize");
module.exports = function (sequelize) {
var User = require("./user")(sequelize),
Deadline = sequelize.define('deadline', {
id:{ type:Sequelize.INTEGER.UNSIGNED, autoIncrement:true, allowNull:false, primaryKey:true},
name:{ type:Sequelize.STRING(255)}
});
User.hasMany(Deadline);
return Deadline;
};
和不让我睡得好的代码:
var sequelize = require('./app/mysqlConnection'),
User = require("./app/models/user")(sequelize),
Deadline = require("./app/models/deadline")(sequelize);
sequelize.drop().success(function () {
sequelize.sync().success(function () {
var user = User.build({password:'bar', email:'ser'}),
dead = Deadline.build({name:'learn js'});
user.addDeadline(dead);
在最后一行我得到
TypeError: Object [object Object] has no method 'addDeadline'
at null.<anonymous> (C:'projects'deadline'dbsynch.js:11:14)
at EventEmitter.emit (events.js:106:17)
at module.exports.finish (C:'projects'deadline'node_modules'sequelize'lib'query-chainer.js:138:30)
at exec (C:'projects'deadline'node_modules'sequelize'lib'query-chainer.js:92:16)
at onSuccess (C:'projects'deadline'node_modules'sequelize'lib'query-chainer.js:65:11)
at null.<anonymous> (C:'projects'deadline'node_modules'sequelize'lib'query-chainer.js:86:15)
at EventEmitter.emit (events.js:95:17)
at null.<anonymous> (C:'projects'deadline'node_modules'sequelize'lib'dao-factory.js:195:41)
at EventEmitter.emit (events.js:95:17)
at null.<anonymous> (C:'projects'deadline'node_modules'sequelize'lib'query-interface.js:162:19)
根据文档,当我通知用户User.hasMany(Deadline)时,用户原型应该自动获得setDeadlines,getDeadlines,添加/删除Deadline方法。你能帮我吗?
顺便说一句,福尔"续集": "~2.0.0-beta.0",
试试这个:
sequelize.drop().success(function () {
sequelize.sync().success(function () {
User.create({password:'bar', email:'ser'}).success(function(user) {
Deadline.create({name:'learn js'}).success(function(deadline) {
user.addDeadline(deadline).success(function() {
console.log('coolio!')
})
})
})
})
})
相关文章:
- 多维关联数组的最后一个索引
- 从Sequelize中的非实例更新
- Sequelize:这些方法应该驻留在哪里
- Sequelize associations:set[Models]添加新模型,而不是关联现有模型
- Sequelize:属性之间的命名冲突'播放列表'以及关联'播放列表'
- 在创建时使用 Sequelize 保存时获取关联
- 在Sequelize中查询连接表而不获取这两个关联
- 如何在 Sequelize 中使用关联
- 创建关联实例-Sequelize
- 如何在Sequelize ORM中限制联接行(多对多关联)
- sequelize-带有关联的Where子句
- 无法使用Sequelize关联架构(postgresql)中的模型
- Sequelize——如何获得关联的模型
- 从Sequelize getter方法访问关联表
- 如何在Sequelize (Node js)中关联对象
- Sequelize有一个关联限制
- Sequelize需要将已经存在的记录与新创建的记录相关联
- 询问sequelize中的关联在哪里
- Sequelize与Postgresql的一对多关联
- Sequelize.js node.js多对多关联