2017-06-15 130 views
1

在对集合执行提取时,加载“和”模型的子模型属性的适当方法是什么?&符与子代获取子/集合

我有一个任务目标:

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

在实体框架中我将在检索时包含子实体。 projectId字段将映射到projects表,框架将为我处理它。

回答

0

在阅读了doco和JavaScript聊天室的一些帮助之后,我意识到我一直在错误地看待这个架构。

我的API应该读取任务数据源并使用检索到的项目ID加载项目数据。项目对象将被分配给任务中的projects属性,并返回整个任务对象。然后,Ampersand将按照预期接管并组装我的模型。