2016-07-13 7 views
0

私はループバックの初心者です。フックでわからないことがあります。 ID - - ... - ... - のuserIdフック付きモデル追加をブロックする方法は?

と私はPOSTリクエストをするために呼び出されたときにはuserIdがすでにユーザテーブルに存在するかどうかをチェックされてやりたい:

私はモデル、これらの特性を持つ「質問」を持っています質問を追加します。

私は以前に保存フックを作成しましたが、うまくいきました(エラーが発生しましたなど)が、モデルの追加をブロックすることはできません。たとえ "次の(エラー) "私のフックで。

Question.observe('before save', function isInDb(ctx, next){  
    var PoemUser = app.models.PoemUser; 
    var PoemUserId = ctx.instance.id_author; 

    PoemUser.findOne({ where: {id: PoemUserId} } ,function(err,exists){ 
      console.log('exist : ' +exists); 
      if (exists == null){ 
       var err = new Error(); 
       err.name = "id not existing" 
       err.status = 404; // don't know wich code use 
       err.message = "This user is not existing"; 
       next(err); 
      }; 
     }); 

    }); 
}; 

ドキュメンテーションを検索しましたが、自分のやり方がうまくいかないと思います。

誰かが私にしたいことをする良い方法を私に説明することができれば、それは本当に素晴らしいと思います。

ありがとうございます!

答えて

0

モデルの追加を防ぐためにフックを使用することは非常に良い方法です。ユーザーがいるときに質問の追加を防止しようとしているという印象を受けました。

次のコードを確認してください。

PoemUser.findOne({ where: {id: PoemUserId} }, function(err,exists){ 
     if(err) { 
      next(error); 
     } 
     console.log('exist : ' +exists); 
     if (!exists){ 
      var err = new Error(); 
      err.status = 404; // don't know which code use 
      err.message = "User not found"; 
      next(err); 
     } else { 
      next(); 
     } 
    }); 
}); 

ダブルあなたはその質問モデルがuserIdフィールドが含まれていますが、ctx.instance.id_authorのようにプロパティid_authorを保存しようとしている述べたように、プロパティ名を確認してください。

だけの情報のために:あなたは質問を更新したときに新しい質問を保存していないとき

  • ctx.instanceにのみ使用可能になります。
  • 質問を更新すると、インスタンスはctx.dataになります。
+0

ありがとう、 私はそれを働かせるために達成した、 情報ありがとう、私はそれを知らなかった! ctx.instanceまたはctx.dataで動作するように更新または追加されているかどうか確認する必要がありますか?あるいは、どちらの場合でも動作させる方法はありますか? –

+0

このようにするには 'var instance =(ctx.instance)? ctx.instance:ctx.data; 'インスタンスには、両方の作成/更新の場合に値が含まれます。 –

関連する問題