Javascript 书架JS:;这是“哈桑”;这不是一个函数
尝试使用bookshelf的最简单示例,但无法在fetch语句中使用“withRelated”通过一对多关系。这是我的代码(为了隐私,删除了一些东西),表示从B到a的一对多Javascript 书架JS:;这是“哈桑”;这不是一个函数,javascript,node.js,bookshelf.js,Javascript,Node.js,Bookshelf.js,尝试使用bookshelf的最简单示例,但无法在fetch语句中使用“withRelated”通过一对多关系。这是我的代码(为了隐私,删除了一些东西),表示从B到a的一对多 "use strict"; var knex = require('knex') ({ client: 'mysql', connection: { host: '127.0.0.1', user: '*******', password: '*******',
"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
Bookshelf:v0.9.4您使用的是从父上下文继承此的箭头函数。您需要使用
function(){}
语法,以便书架可以正确绑定此
。速记函数表示法较短,并绑定到类的此上下文
var A = bookshelf.Model.extend({
tableName: 'A',
propB() {
return this.hasOne(B, 'A_id')
}
})
非常感谢你!我也有同样的问题,使用ES5函数()修复了它。你救了我的命。。。这也是一个很好的信息,我从来都不知道
function()
和()=>
之间有本质上的区别,非常酷。我不知道,谢谢。对于其他想要了解更多信息的人: