Feathersjs:如何发送响应然后触发函数?
Feathersjs: how to send a response and after that trigger a function?
我有一些代码适用于 REST 端点,其中一条消息是:
- 在数据库中创建
- stepA 已处理
- 当stepA ok时,返回响应信息
- 已处理步骤 B。
这是代码:
// POST single message
app.post('/message', (req, res) => {
const url = req.body.properties.url
const image = req.body.properties.image
const extraField = req.body.properties.extraField
db.message.create({
url: url,
image: image,
})
.then(() => myProcess(extraField, 'stepA'))
.then(newMessage => res.json(newMessage))
.then(() => myProcess(extraField, 'stepB'))
})
现在我正在尝试使用 feathersjs 进行相同的操作,但我不知道如何准确地执行 2、3、4。
我现在有一个消息服务创建方法的 AFTER 挂钩:
module.exports = function (options = {}) { // eslint-disable-line no-unused-vars
return function processNewMessage (hook) {
const { extraField } = hook.data.properties
Promise.resolve(myProcess(extraField, 'stepA'))
.then( <<NO-IDEA>> ) // Send RESPONSE!!
.then(() => myProcess(extraField, 'stepB'))
return Promise.resolve(hook);
};
};
所以我的问题归结为:如何使用 feathersjs 发送响应并随后触发 'myProcess stepB'?
虽然 this 是 'legacy',但我认为它可能仍然相关。
在feathersjs的FAQ中有回答!
发送响应给用户后如何处理:
这取决于你return中钩的承诺。下面是发送电子邮件但不等待成功消息的挂钩示例。
function (hook) {
// Send an email by calling to the email service.
hook.app.service('emails').create({
to: 'user@email.com',
body: 'You are so great!'
});
// Send a message to some logging service.
hook.app.service('logging').create(hook.data);
// Return a resolved promise to immediately move to the next hook
// and not wait for the two previous promises to resolve.
return Promise.resolve(hook);
}
我有一些代码适用于 REST 端点,其中一条消息是:
- 在数据库中创建
- stepA 已处理
- 当stepA ok时,返回响应信息
- 已处理步骤 B。
这是代码:
// POST single message
app.post('/message', (req, res) => {
const url = req.body.properties.url
const image = req.body.properties.image
const extraField = req.body.properties.extraField
db.message.create({
url: url,
image: image,
})
.then(() => myProcess(extraField, 'stepA'))
.then(newMessage => res.json(newMessage))
.then(() => myProcess(extraField, 'stepB'))
})
现在我正在尝试使用 feathersjs 进行相同的操作,但我不知道如何准确地执行 2、3、4。
我现在有一个消息服务创建方法的 AFTER 挂钩:
module.exports = function (options = {}) { // eslint-disable-line no-unused-vars
return function processNewMessage (hook) {
const { extraField } = hook.data.properties
Promise.resolve(myProcess(extraField, 'stepA'))
.then( <<NO-IDEA>> ) // Send RESPONSE!!
.then(() => myProcess(extraField, 'stepB'))
return Promise.resolve(hook);
};
};
所以我的问题归结为:如何使用 feathersjs 发送响应并随后触发 'myProcess stepB'?
虽然 this 是 'legacy',但我认为它可能仍然相关。
在feathersjs的FAQ中有回答! 发送响应给用户后如何处理:
这取决于你return中钩的承诺。下面是发送电子邮件但不等待成功消息的挂钩示例。
function (hook) {
// Send an email by calling to the email service.
hook.app.service('emails').create({
to: 'user@email.com',
body: 'You are so great!'
});
// Send a message to some logging service.
hook.app.service('logging').create(hook.data);
// Return a resolved promise to immediately move to the next hook
// and not wait for the two previous promises to resolve.
return Promise.resolve(hook);
}