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
需要传递 req
和 res
参数,但我只有 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 调用。
我有一个控制器方法: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
需要传递 req
和 res
参数,但我只有 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 调用。