2016-03-26 16 views
0

今日、私は、削除操作が'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'フックは関係なく、操作の成功の呼び出されるかどうかの兆候はありません。 (データベースで手動で確認)

さらに、操作が成功したかどうかを判断する唯一の方法は、それ以前に存在していたレコードを選択することです。

これを取得する方法はありますか?

答えて

1

サーバー上のモデルが変更されたときにイベントを送信するChangeStreamをセットアップできます。警告のみがDELETEにあります。要求に一致するレコードがなくても、操作が成功したときにイベントを取得します。私は二回name=fooと同じレコードを削除しようとするのであれば、例えば、私は二回、この背中を取得します:

{"target":"foo","where":{"name":"foo"},"type":"remove"}

https://docs.strongloop.com/display/public/LB/Realtime+server-sent+events

編集:あなたはまた、変更ストリームを作成し、アクセスすることができます内蔵のREST APIを介して

https://docs.strongloop.com/display/public/LB/PersistedModel+REST+API#PersistedModelRESTAPI-CreateChangeStream

+0

ああ。さて、削除するものがなければ、それは正常に完了したと言うのは技術的に正しいと思う:Pありがとう! –

関連する問題