【问题标题】:How feathersjs rollback in hook?如何在钩子中回滚feathersjs?
【发布时间】:2018-02-06 03:29:45
【问题描述】:

请提供一个使用 feathersjs 和 mongoose 进行回滚操作的示例。从一个钩子? 谢谢

//hook befor 
hook.app.service('service1').update(data).then(data1Save =>
{
hook.app.service('service2').update(data2).catch(err=>{
// TODO rollback service1
});
});

【问题讨论】:

    标签: mongoose feathersjs


    【解决方案1】:

    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
    });
    

    【讨论】:

      【解决方案2】:

      感谢您的示例:

      我的回滚解决方案(挂钩中的标志):

        after: {
          all: []
          create: [myCreateHook({
            // create transaction
          service:'transaction',
          data:transactionInfo,
            // update transaction
          }),myAddArrayHook({
          path:'transactions.createdTransaction',
          service:'account',
         error:hook.isTransactionCatched})],   
        }
      

      我希望找到一个feathersJs系统:(。

      再次感谢。

      【讨论】:

        猜你喜欢
        • 2020-09-18
        • 1970-01-01
        • 1970-01-01
        • 2016-09-06
        • 1970-01-01
        • 1970-01-01
        • 2019-10-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多