尝试使用最简单的书架示例,但在fetch语句中使用“withRelated”无法超越一对多的关系。这是我的代码(隐私时删除了一些内容)代表从B到A的一对多。
"use strict";
var knex = require('knex') ({
client: 'mysql',
connection: {
host: '127.0.0.1',
user: '*******',
password: '*******',
database: '*******',
charset: 'utf8'
}
});
var bookshelf = require('bookshelf')(knex);
var A, B
A = bookshelf.Model.extend({
tableName: 'A',
propB: () => {
return this.hasOne(B, 'A_id')
}
B = bookshelf.Model.extend({
tableName: 'B',
propA: () => { return this.belongsTo(A, 'A_id') }
})
A.forge().fetch({withRelated: ['propB']}).then(function(x){console.log(x)})
然而,运行这个我得到“Unhandled rejection TypeError:this.hasOne不是函数”,引用A中的this.hasOne。如果我删除“withRelated”子句,它会按预期运行并返回正确的在数据库中输入。
为什么我收到此错误?更多信息: Nodejs:v4.4.1 书架:v0.9.4
答案 0 :(得分:6)
您正在使用从其父上下文继承this
的箭头函数。您需要使用function() {}
语法,以便书架可以正确绑定this
。
答案 1 :(得分:0)
速记函数表示法较短,并且与该类的上下文绑定。
var A = bookshelf.Model.extend({
tableName: 'A',
propB() {
return this.hasOne(B, 'A_id')
}
})