【发布时间】:2015-05-09 08:58:05
【问题描述】:
我有两个模型(个人、电子邮件)并尝试使用 Sequelize 命令插入到创建的“个人电子邮件”表中。当 Sequelize 正在创建所需的表时,它在尝试向该表添加/获取/设置/从该表中返回以下错误:“对象 [object Promise] 没有方法 'addEmail'”。我错过了什么?
Sequelize 文档说,如果模型是 User 和 Project,“这会将方法 getUsers、setUsers、addUsers 添加到 Project,并将 getProjects、setProjects 和 addProject 添加到 User。”
这让我相信(查看 Promise)我可能误解了如何使用 Node.js 的异步特性。我尝试了同步和异步版本的插入,都返回了上面相同的消息。
续集文档:http://docs.sequelizejs.com/en/latest/docs/associations/
代码:
routes/index.js
var express = require('express');
var router = express.Router();
var models = require('../models');
/* GET home page. */
router.get('/', function(req, res, next) {
'use strict';
var tIndividual, tEmail;
tIndividual = models.Individual.create({
name: "Test"
});
tEmail = models.Email.create({
address: "test@gmail.com"
});
console.log(tEmail);
res.render('index', { title: 'Express' });
});
module.exports = router;
或
/* GET home page. */
router.get('/', function(req, res, next) {
'use strict';
var tIndividual, tEmail;
tIndividual = models.Individual.create({
name: "Test"
}).then(function(){
tEmail = models.Email.create({
address: "test@gmail.com"
}).then(function(){
tIndividual.addEmail(tEmail).then(function(){
console.log("Success");
});
})
});
res.render('index', { title: 'Express' });
});
module.exports = router;
models/index.js
db.Individual.hasMany(db.Email, {
as: 'Email',
through: 'Individual_Email'
});
db.Email.hasMany(db.Individual, {
as: 'Individual',
through: 'Individual_Email'
});
如何以最佳方式添加到“Individual_Email”表中?我假设我需要同步执行以等待更新,但我愿意接受任何建议。谢谢!
【问题讨论】:
标签: javascript node.js promise sequelize.js