2017-02-03 2 views
0

私はユーザーモデルを持っており、ユーザーは多くの書籍(別のモデル)を読んでいるとします。ここまでは順調ですね。今では彼が読んでいる各本のユーザーの進歩率も保存したいと思っています。何かのように:Loopback 2.xを使用してユーザーとその書籍(および進行状況)を保存する方法

myBooks: [ 
{ 
    book: ObjectId: hj123bkj123, 
    progress: 12% 
}, 
{ 
    book: ObjectId: hj123bkj124, 
    progress: 32% 
}, 
... 
] 

私は、進行状況を保存するために余分なプロパティでモデルを通じて使用してみたのだが、動作しますが、それは文句を言わない私が1で(ユーザーに本を追加し、ユーザモデルによる割合を設定しましょうコール)、私はユーザモデルを介して(1回の呼び出しで)すべてのユーザの書籍(および進捗状況)を取得することはできません。

必要に応じて現在の設定を投稿できます...

アイデアはありますか? ありがとう!

+0

それはあなたの関係の設定やモデルの詳細を表示する方が良いでしょう –

答えて

0

1回の呼び出しで書籍や進捗状況を取得するには、2つの方法があり、あなたのthroughモデル名がBookProgress

{ 
    "name": "BookProgress", 
    "base": "PersistedModel", 
    "idInjection": true, 
    "options": { 
     "validateUpsert": true 
    }, 
    "properties": { 
     "progress": { 
     "type": "number", 
     "required": true 
    } 
}, 
"relations": { 
    "user": { 
     "type": "belongsTo", 
     "model": "User", 
     "foreignKey": "" 
    }, 
    "book": { 
     "type": "belongsTo", 
     "model": "Book", 
     "foreignKey": "" 
    } 
}, 
.... 
.... 
} 

であると仮定します。詳細情報については

//Call using `BookProgress` `find` method with `include` of books 
var userId = "123456785"; 
BookProgress.find({ where: {userId: userId}, include: ['books'] }, 
function(err, bookProgress){ 
    if(!err){ 
     //Your book data along with progress in one call 
    } 
}); 


//Another way is to create Remote Method for each fetch and save method. 
User.getBooks = function(userId, callback) { 
    //fetch user and progress along with the book data 
} 

User.remoteMethod('getBooks', { 
    accepts: {arg: 'userId', type: 'string'}, 
    returns: {arg: 'user', type: 'user', root: true} 
    }); 

http://loopback.io/doc/en/lb3/Remote-methods.html

関連する問題