2017-06-15 6 views
1

アンパサンドモデルの子モデルプロパティをコレクションでフェッチするときに、適切な方法は何ですか?親を持つアンパサンドと子コレクションを取得する

私はTaskオブジェクトがあります。

{ 
    "id": 1 
    "projectId": 2 // child entity id 
    "name": "This task for project 1" 
} 

をそして、私はアンパサンドモデル作成されました:

var AmpModel = require('ampersand-model'); 
var Project = require('../project'); 

module.exports = AmpModel.extend({ 
    props: { 
     id: ['number'], 
     projectId: ['number'], 
     name: ['string'] 
    }, 
    children: { 
     project: Project 
    } 
}); 

そしてコレクション:

var AmpCollection = require('ampersand-rest-collection'); 
var Task = require('./task'); 

module.exports = AmpCollection.extend({ 
    model: Task, 
    url: '/api/task' 
}); 

私のAPIのように、非常に簡単ですがアプリはメモリに入力を格納するだけです:

var _ = require('lodash'); 
var store = require('../data'); // this is a file with some init data 

function get(id) { 
    return _.findWhere(store.tasks.data, { id: parseInt(id + '', 10) }); 
} 

exports.list = function (req, res) { 
    res.send(store.tasks.data); 
}; 

exports.add = function (req, res) { 
    var item = req.body; 
    item.id = store.tasks.id++; 
    store.tasks.data.push(item); 
    res.status(201).send(item); 
}; 

exports.get = function (req, res) { 
    var found = get(req.params.id); 
    res.status(found ? 200 : 404); 
    res.send(found); 
}; 

Entity Frameworkでは、取得時に子エンティティが含まれていました。 projectIdフィールドはprojectsテーブルにマップされ、フレームワークがそれを処理します。

答えて

0

JavaScriptチャットルームでドコモとヘルプを読んだ後、私はこのアーキテクチャを間違った方法で見てきたことに気付きました。

私のAPIは、タスクデータソースを読み込み、取得したプロジェクトIDを使用してプロジェクトデータを読み込む必要があります。プロジェクトオブジェクトはタスクのprojectsプロパティに割り当てられ、タスクオブジェクト全体が返されます。その後、アンパサンドが引き継ぎ、私のモデルを予想通りに組み立てます。

関連する問題