我有一个外部RESTful端点,我正试图在我的CompoundJS应用程序中建立一个模型。我有点困惑于几件事:
现在,我要这么做:
var options = {
host: 'api.local',
port: 80,
path: '/users',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
var http = require('http');
http.get(options, function(res) {
var output = "";
res.on('data', function(chunk) {
output += chunk;
});
res.on('end', function() {
var obj = JSON.parse(output);
send({code: 200, data: obj});
});
});obj实际上是带着我所有的用户数据返回的(但是用JSON)。返回的JSON如下所示:
{
time: integer,
count: integer,
data: [{
userid: string,
name: string,
email: string
}, {
userid: string,
...
}]
}JSON很棒,但是我很想把它加载到一个模型中,所以我想我应该有一个外部模型,它包含time (类型为整型)、count (带类型整数)和data (带有类型数组)。然后我有一个内部模型(让我们称之为User),它包含userid (类型字符串)、name (类型字符串)和email (类型字符串)。然后,我不得不将data与拥有许多User模型联系起来。我希望能有一些类似于Ext JS does it的东西。
那么,如何基于这个RESTful端点的返回来构建一个模型,以及从端点获取这些数据的最佳方法是什么?我的当前代码是否是获取数据的最佳途径,还是可以使用我在Schema.js中创建的模型来建立一个更干净的方法?理想情况下,我可以在Schema.js中创建一个模型,将其与RESTful API挂钩,只需执行普通的GET/POST操作。
任何帮助都将不胜感激!
发布于 2013-09-03 17:30:41
目前我想出的解决方案..。看起来很管用,但看上去有点烦人。如果你看到TODO的评论,这就是我想要做的.我只是想知道现在是否有可能。这使我能够控制用户模型显示/隐藏的内容,因此我更高兴一些。
Schema.js
var User = describe('User', function() {
property('userid', String);
property('name', String);
property('email', String);
set('restPath', pathTo.users);
});
var Hash = describe('Hash', function () {
property('time', Number);
property('count', Number);
property('data', new Array());
set('restPath', pathTo.hashes);
});hashes_controller.js
var options = {
host: 'api.local',
port: 80,
path: '/users',
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
};
var http = require('http');
http.get(options, function(res) {
var output = "";
res.on('data', function(chunk) {
output += chunk;
});
res.on('end', function() {
var obj = JSON.parse(output);
var data = {};
data.msec = obj.msec;
data.count = obj.count;
data.users = [];
// TODO: Ideally, this is what I would like to do
// var hash = new Hash(obj);
for (var i = 0; i < obj.data.length; i++) {
var user = new User(obj.data[i]);
data.users.push(user);
}
send({code: 200, data: data});
});
});https://stackoverflow.com/questions/18596616
复制相似问题