Sails - 来自服务的访问控制器功能(req,res)

Sails - Access Controller function(req,res) from Service

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

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

这个控制器方法有一个路由:

 '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 参数,但我只有 data/params/body。 谢谢

最好的方法是在某些 service 方法中移动 create 逻辑,以便它可以在项目的任何地方使用。一旦完成,然后从 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 调用。