2016-04-15 7 views
2

ブックシェルフの最も単純な例を試してみましたが、フェッチステートメントで "withRelated"を使用して1対多の関係を超えることはできません。 「:this.hasOne関数ではない未処理の拒絶反応はTypeErrorは」ここに私のコードは私が得るこの実行中の1対多のBからAへBookshelf JS: "this.hasOne"は関数ではありません

"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)}) 

しかし表し、(プライバシーのために取り外さいくつかのものを使用)であります"withRelated"節を削除すると、期待どおりに実行され、データベース内の正しい項目が返されます。

このエラーはなぜ発生しますか?詳細情報: Nodejs:v4.4.1 本棚:v0.9.4

答えて

5

あなたは、その親コン​​テキストからthisを継承し、矢印の機能を使用しています。ブックシェルフがthisを正しくバインドできるように、function() {}の構文を使用する必要があります。

+0

ありがとうございました! – nobillygreen

+0

私は同じ問題を抱えており、ES5関数(){}を使って修正しました。 – fraxture

0

短縮形の関数表記は短く、このクラスのこのコンテキストにバインドされます。

var A = bookshelf.Model.extend({ 
    tableName: 'A', 
    propB() { 
     return this.hasOne(B, 'A_id') 
    } 
}) 
関連する問題