feathersjs如何在hook中回滚?
How feathersjs rollback in hook?
有人可以提供一个使用 feathersjs 和 mongoose 进行回滚操作的示例。从一个钩子?
谢谢
//hook befor
hook.app.service('service1').update(data).then(data1Save =>
{
hook.app.service('service2').update(data2).catch(err=>{
// TODO rollback service1
});
});
feathersjs 中没有回滚,该构造依赖于数据提供者,很可能需要手动集成。
我通常做的是在边缘组件上执行更新,然后在边缘项存在后更新依赖组件。
如果您在依赖项中保留边缘项的列表,它将允许您在之后执行清理以确保更新进入。
// 例子
app.service('transaction').create({...transactionInfo}).then(createdTransaction => {
app.service('account').update(accountId,
{
$addToSet:{
transactions:[createdTransaction._id] // add id to the parent
},
$set:{
// nonTransactionsListdata
}
}
).then(updatedAccount => {
// All updates should be successful
// you can check to see if they took effect and resolve accordingly
}).catch( err => {
//Something happened, and may require a retry.
// check validity of createdTransaction to ensure its being used correctly
});
}).catch(err => {
// Issue creating the transaction in the first place
});
感谢示例:
我的回滚解决方案(钩中的标志):
after: {
all: []
create: [myCreateHook({
// create transaction
service:'transaction',
data:transactionInfo,
// update transaction
}),myAddArrayHook({
path:'transactions.createdTransaction',
service:'account',
error:hook.isTransactionCatched})],
}
我希望找到一个 feathersJs 系统:( .
再次感谢。
有人可以提供一个使用 feathersjs 和 mongoose 进行回滚操作的示例。从一个钩子? 谢谢
//hook befor
hook.app.service('service1').update(data).then(data1Save =>
{
hook.app.service('service2').update(data2).catch(err=>{
// TODO rollback service1
});
});
feathersjs 中没有回滚,该构造依赖于数据提供者,很可能需要手动集成。
我通常做的是在边缘组件上执行更新,然后在边缘项存在后更新依赖组件。
如果您在依赖项中保留边缘项的列表,它将允许您在之后执行清理以确保更新进入。
// 例子
app.service('transaction').create({...transactionInfo}).then(createdTransaction => {
app.service('account').update(accountId,
{
$addToSet:{
transactions:[createdTransaction._id] // add id to the parent
},
$set:{
// nonTransactionsListdata
}
}
).then(updatedAccount => {
// All updates should be successful
// you can check to see if they took effect and resolve accordingly
}).catch( err => {
//Something happened, and may require a retry.
// check validity of createdTransaction to ensure its being used correctly
});
}).catch(err => {
// Issue creating the transaction in the first place
});
感谢示例:
我的回滚解决方案(钩中的标志):
after: {
all: []
create: [myCreateHook({
// create transaction
service:'transaction',
data:transactionInfo,
// update transaction
}),myAddArrayHook({
path:'transactions.createdTransaction',
service:'account',
error:hook.isTransactionCatched})],
}
我希望找到一个 feathersJs 系统:( .
再次感谢。