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);
});
};
Node.jsアプリ内からも使用できるようにAPIを設計する方法はありますか?APIの外部でデータベースコードを複製する必要がないようにしています。私は基本的にデータサーバー側をレンダリングできるコントローラーを持っています:
// In controller.js
var api = require('api')
exports.page = function(req, res) {
res.send(api.lists()); // This won't work
};
コールバック関数を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);
}
});
};
何か案は?