2016-04-29 3 views
1

私は1対1の関係を持つコメントモデルを作成しました。セイルのコントローラでcreateをカスタマイズするにはどうすればいいですか

// api/models/Comment.js 
module.exports = { 
    attributes: { 
    user: { 
     model: 'user', 
     unique: true, 
    }, 

    comment: { 
     type: 'string' 
    }, 
    } 
}; 

これを作成するHTMLフォーム。私はuserIdを前に、ユーザーがreq.session.user中(USERID)Passport.jsを使用してログインしていると仮定して(コメントを作成、追加することができますどのように

<form method="POST" action="/comment"> 
    <!-- send logged user --> 
    <input type="text" name="workingRegion" placeholder="City"> 
    <input type="submit" value="submit"> 
</form> 

私はおよそCommentControllerでcreate()をカスタマイズ考えていましたが、私は方法がわからない を作成します。機能(REQ、RES)を{ をするif(req.session & & req.session.user!)//パスポート を使用して//エラー

//save() ? 
} 

答えて

1

はこのような何かを試してみてください:

// api/controllers/CommentController.js 

create: function(req, res) { 
    var params = req.params.all(); 
    params.user = req.session.user.id; 

    Comment.create(params) 
    .exec(function(err, comment) { 
     //do stuff here 
    }); 
} 

その後、ユーザーがアクティブなセッションを持っていることを確認するためにチェックするポリシーを作成します。

// api/policies/sessionAuth.js 

module.exports = function(req, res, next) { 
    // this assumes you created an "authenticated" flag for the session 
    // when the user logged in 
    if (req.session.authenticated) { 
    return next(); 
    } 

    return res.forbidden('You are not permitted to perform this action.'); 
}; 
+0

これを行うことはできますか?メソッド 'create()'をオーバーライドして、私のメソッドの中で彼を呼び出しますか? super.create()のように?それは奇妙なことではありませんか? – Makah

+0

申し訳ございませんが、最初は明確ではないかもしれませんが、明快さを改善するコメントを追加しました。モデルメソッドcreate()がオーバーライドされていません。私が含まれているスニペットは、CommentController.jsに置かれ、/ commentへのPOSTingによって呼び出されます。青写真を有効にしている場合、 "作成"青写真は、ユーザ/フロントエンドによって提供された値を保存する以上のことをしているので、あなたが望むものです。 –

関連する問題