在 'after delete' 挂钩中获取数据库操作状态
Get Status of database operation in 'after delete' hook
今天我 运行 遇到一个问题,我无法确定 'after delete'
挂钩中的删除操作是否成功完成。这是有问题的,因为它需要额外的数据库操作来确定删除是成功还是失败。
UserFollowers.observe('after delete', function observer(ctx, next) {
var instance = ctx.instance; // ctx.instance is null for some reason.
logger.info('Starting after delete');
logger.info('Ctx:',JSON.stringify(ctx));
// Ctx: {"where":{"followSrcId":2,"followDestId":1},"hookState":{},"options":{}}
logger.info('Ctx Non-Enumerable Properties:', Object.getOwnPropertyNames(ctx));
// Ctx Non-Enumerable Properties: ["Model","where","hookState","options"]
// Note that Model is the only non-enumerable property not spit out by JSON.stringify()
});
没有指示操作是成功还是失败,并且无论操作是否成功,都会调用 'after delete'
挂钩。 (在数据库中手动验证)
此外,确定操作是否成功的唯一方法是尝试 select 之前存在的记录。
有什么办法可以得到这个吗?
您可以设置一个 ChangeStream,它会在服务器上的模型发生更改时发送一个事件。唯一需要注意的是 DELETE,当操作成功时,即使没有匹配请求的记录,您也会收到一个事件。因此,例如,如果我尝试使用 name=foo
删除同一条记录两次,我将两次取回:
{"target":"foo","where":{"name":"foo"},"type":"remove"}
https://docs.strongloop.com/display/public/LB/Realtime+server-sent+events
编辑:您还可以通过内置 REST 创建和访问变更流 API
今天我 运行 遇到一个问题,我无法确定 'after delete'
挂钩中的删除操作是否成功完成。这是有问题的,因为它需要额外的数据库操作来确定删除是成功还是失败。
UserFollowers.observe('after delete', function observer(ctx, next) {
var instance = ctx.instance; // ctx.instance is null for some reason.
logger.info('Starting after delete');
logger.info('Ctx:',JSON.stringify(ctx));
// Ctx: {"where":{"followSrcId":2,"followDestId":1},"hookState":{},"options":{}}
logger.info('Ctx Non-Enumerable Properties:', Object.getOwnPropertyNames(ctx));
// Ctx Non-Enumerable Properties: ["Model","where","hookState","options"]
// Note that Model is the only non-enumerable property not spit out by JSON.stringify()
});
没有指示操作是成功还是失败,并且无论操作是否成功,都会调用 'after delete'
挂钩。 (在数据库中手动验证)
此外,确定操作是否成功的唯一方法是尝试 select 之前存在的记录。
有什么办法可以得到这个吗?
您可以设置一个 ChangeStream,它会在服务器上的模型发生更改时发送一个事件。唯一需要注意的是 DELETE,当操作成功时,即使没有匹配请求的记录,您也会收到一个事件。因此,例如,如果我尝试使用 name=foo
删除同一条记录两次,我将两次取回:
{"target":"foo","where":{"name":"foo"},"type":"remove"}
https://docs.strongloop.com/display/public/LB/Realtime+server-sent+events
编辑:您还可以通过内置 REST 创建和访问变更流 API