Node.js后端API

时间:2017-09-17 09:31:25

标签: javascript node.js rest

所以,我现在正在从以下内容重写我的api:

function getAirplaneCompany(id) {
        return airPlaneCompany.findOne({_id: id}).then(function (firm) {
            return firm;
        });
    }

到此:

exports.getAirplaneCompany = function (req,res) {
    return airPlaneCompany.findOne({_id: id}).then(function (firm) {
        return res.json(firm);
    });
};

我可以像通常在另一个控制器中那样调用getAirplaneCompany函数吗?

例如:

exports.PlaneExpensesFromXToY = function (req,res) {
    return getAirplaneCompany(someID).then(function (response) {
        // do something with it here;
    });
};

也是为了从getAirplaneCompany获取ID,这样做是否正确:

exports.getAirplaneCompany = function (req,res,id) {
    return airPlaneCompany.findOne({_id: id}).then(function (firm) {
        return res.json(firm);
    });
};

我如何从PlaneExpensesFromXToY func中调用它?

编辑:

计划将其称为:router.post('/ships/get',ships.getSpecificCompany());

编辑二:

我重新编写它并需要获取req和res的原因是因为我正在寻找一种在某些函数中发出socket.io事件的方法。

正如我已经搜索了将近一年的时间,似乎这是我需要在其中使用socket.io才能完成的认证。

另外,我读过关于restful api以及它们应该如何看的内容。 示例:

router.post('/gang/garage/withdraw',gangs_model.withdrawGangCar());
router.post('/gang/garage/donate',gangs_model.donateCarToGang());

更新3: gangs_model和ship,类似于:

var ships_model = require('./app/gamemodels/ship_model.js');

1 个答案:

答案 0 :(得分:0)

如果您需要为来自另一个控制器的呼叫使用相同的功能而对于路由请求,我会建议如下:

function getSpecificCompany(id){
  new Promise(function(resolve, reject) {
    airPlaneCompany.findOne({_id: id})
       .then(function (firm) {
           resolve(firm);
       })
       .catch(function(err){
          reject(err);
       });
  });
}

在路线中,您可以执行以下操作:

route.get('airplaneCompany/:id, getAirplaneCompany);

在路线功能中你可以这样做:

exports.getAirplaneCompany = function (req, res) {
    getSpecificCompany(req.params.id)
       .then(function(company){
            res.json(company);
       });
};

相同的用法适用于不同的控制器。

exports.PlaneExpensesFromXToY = function (req, res) {
    getSpecificCompany(someID).then(function (response) {
        // do something with it here;
    });
};