【发布时间】:2014-05-02 16:50:47
【问题描述】:
我正在尝试让 NODE-ORM2 扩展工作。我找不到要遵循的全包示例,只有从模型定义级别开始的部分示例(不参考数据库)。
基本上我有两个模型 A 和 B,它们之间存在 一对一 关系,其中 B.AId 是 A.id 的外键(我可能应该在数据库中建立它为简单起见声明,但 orm2 不读取这些关系。
我不明白它为什么要寻找 a_b 关系表。我也不明白如何形成两个模型之间的关系。
有人可以帮忙吗?在 hasOne 关系中,我们可以指定字段 - 这里似乎缺少。
数据库:
create table A
(
`id` int(11) NOT NULL AUTO_INCREMENT key,
`addedOn` date DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1718087 DEFAULT CHARSET=utf8;
create table B
(
`id` int(11) NOT NULL AUTO_INCREMENT KEY,
AId int(11),
`addedOn` date DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=1718087 DEFAULT CHARSET=utf8;
insert into A (addedOn)values('2012-02-02')
insert into B (AId, addedOn)values((select id from A), '2012-02-04')
型号:
// User Model
module.exports = function (db, cb) {
console.log('ORM loading \'A\' model')
var A = db.define('A', {
id : Number,
addedOn : Date
}) ;
var B = A.extendsTo('B', {
id : Number,
AId : Number,
addedOn : Date
})
return cb()
}
检索:
var A = req.db.models.A
A.get(1718087, {autoFetch: true}, function(err, a){
a.getB(function(err, b){
console.log(JSON.stringify(b, null, 4))
})
console.log(JSON.stringify(a, null, 4))
})
例外:
ER_NO_SUCH_TABLE: Table 'mydb.a_b' doesn't exist
【问题讨论】:
标签: javascript node.js node-orm2