Sails - 来自服务

时间:2018-03-20 09:47:06

标签: model-view-controller sails.js

我有一个Controller方法:DbController.create来创建数据库条目。这是以下格式:

create: function (req, res) {
    var params = req.body;
    Db.create({
...

此Controller方法有一条路线:

 'POST /createData': 'DbController.create'

我可以使用CURL到这个URL没有问题(curl -X POST --data 'userId="testuser1"' http://localhost:1337/createData),从我的UI代码我可以使用sails-io.js和io.socket.post(....)来调用它。

问题是我想立即从我的服务中使用它(DbService)。我不知道如何解决此问题,因为仅使用DbController.create需要传递reqres参数,但我所拥有的只是数据/参数/身体。 感谢

1 个答案:

答案 0 :(得分:2)

最好的方法是在某个create方法中移动service逻辑,以便可以在项目的任何位置使用它。完成此操作后,使用DbController.create以及其他服务中的必要参数调用该方法。

样品:

// DBService:

createData: (params, callback) => {
    Db.create(params)...
}

// DBController:

create: (req, res) => {
    const params = req.body;
    DBService.createData(params, (err, results) => {
        if (err) {
            return res.serverError(err);
        }
        return res.json(results);
    });
}

// SomeOtherService:

someMethod: (params, callback) => {
    DBService.createData(params, callback);
}

另一种方式(不必做出http请求)是从服务到服务的DbController.create的API端点进行HTTP调用。