首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CompoundJS:从外部REST创建模型

CompoundJS:从外部REST创建模型
EN

Stack Overflow用户
提问于 2013-09-03 15:56:52
回答 1查看 252关注 0票数 0

我有一个外部RESTful端点,我正试图在我的CompoundJS应用程序中建立一个模型。我有点困惑于几件事:

  1. 如何在外部RESTful API的基础上构建模型(大多数模型似乎都以数据库为中心)?
  2. 访问这个RESTful API的最佳方法是什么?

现在,我要这么做:

代码语言:javascript
复制
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如下所示:

代码语言:javascript
复制
{
  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操作。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 17:30:41

目前我想出的解决方案..。看起来很管用,但看上去有点烦人。如果你看到TODO的评论,这就是我想要做的.我只是想知道现在是否有可能。这使我能够控制用户模型显示/隐藏的内容,因此我更高兴一些。

Schema.js

代码语言:javascript
复制
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

代码语言:javascript
复制
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});
  });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18596616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档