【发布时间】:2013-02-12 22:20:34
【问题描述】:
我有一个从 mongodb 返回一些 JSON 的 API:
// In router.js
var api = require('api')
app.get('/lists', api.lists);
// In api.js
var db = require('db')
exports.lists = function(req, res) {
db.lists.find({}, function(err, lists) {
res.send(lists);
});
};
有没有办法设计 API,以便我也可以在我的 Node.js 应用程序中使用它?我试图避免在 API 之外复制任何数据库代码。我基本上有一个可以在服务器端呈现数据的控制器:
// In controller.js
var api = require('api')
exports.page = function(req, res) {
res.send(api.lists()); // This won't work
};
我找到了一个 hacky 解决方案,即将回调函数传递给 api.lists(),但我觉得这是实现此目的的“错误”方式:
// In api.js
exports.lists = function(req, res, callback) {
db.lists.find({}, function(err, lists) {
if(callback){
callback(lists);
} else {
res.send(lists);
}
});
};
有什么想法吗?
【问题讨论】:
-
你想使用自己的api吗?以前从未听说过这个。也许您想使用可以在两个不同地方使用的模型...查看 express。
-
这听起来很像 wsdl/webservice 发现,即能够根据您公开的 api 调用自动创建方法/属性。如果是这样,祝你好运,到目前为止,我们已经尝试了一些标准化的尝试。
标签: api node.js mongodb express api-design