Bookshelf JS:"this.hasOne" 不是函数
Bookshelf JS: "this.hasOne" is not a function
尝试完成最简单的书架示例,但无法通过在获取语句中使用 "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 is not a function",指的是 A 中的 this.hasOne。如果我删除 "withRelated" 子句,它会按预期运行并且 returns 数据库中的正确条目。
为什么我会收到此错误消息?更多信息:
节点:v4.4.1
书架:v0.9.4
您正在使用从其父上下文继承 this
的箭头函数。你需要使用function() {}
语法,书架才能正确绑定this
。
Shorthand 函数符号更短并且绑定到 class.
的 this-context
var A = bookshelf.Model.extend({
tableName: 'A',
propB() {
return this.hasOne(B, 'A_id')
}
})
尝试完成最简单的书架示例,但无法通过在获取语句中使用 "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 is not a function",指的是 A 中的 this.hasOne。如果我删除 "withRelated" 子句,它会按预期运行并且 returns 数据库中的正确条目。
为什么我会收到此错误消息?更多信息: 节点:v4.4.1 书架:v0.9.4
您正在使用从其父上下文继承 this
的箭头函数。你需要使用function() {}
语法,书架才能正确绑定this
。
Shorthand 函数符号更短并且绑定到 class.
的 this-contextvar A = bookshelf.Model.extend({
tableName: 'A',
propB() {
return this.hasOne(B, 'A_id')
}
})