如何在 Sails 的控制器中自定义创建
How can I customize create in controller in Sails
我创建了一个具有一对一关联的评论模型。
// api/models/Comment.js
module.exports = {
attributes: {
user: {
model: 'user',
unique: true,
},
comment: {
type: 'string'
},
}
};
还有一个 HTML 表单来创建它。
<form method="POST" action="/comment">
<!-- send logged user -->
<input type="text" name="workingRegion" placeholder="City">
<input type="submit" value="submit">
</form>
如何在创建评论之前添加 userId(假设用户使用 Passport.js 登录(req.session.user 中的 userId)?
我正在考虑在 CommentController 中自定义 create()
,但我不知道如何。
创建:函数(请求,资源){
if (!req.session && !req.session.user) //使用护照
//错误
//save() ?
}
尝试这样的事情:
// 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.');
};
我创建了一个具有一对一关联的评论模型。
// api/models/Comment.js
module.exports = {
attributes: {
user: {
model: 'user',
unique: true,
},
comment: {
type: 'string'
},
}
};
还有一个 HTML 表单来创建它。
<form method="POST" action="/comment">
<!-- send logged user -->
<input type="text" name="workingRegion" placeholder="City">
<input type="submit" value="submit">
</form>
如何在创建评论之前添加 userId(假设用户使用 Passport.js 登录(req.session.user 中的 userId)?
我正在考虑在 CommentController 中自定义 create()
,但我不知道如何。
创建:函数(请求,资源){
if (!req.session && !req.session.user) //使用护照
//错误
//save() ?
}
尝试这样的事情:
// 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.');
};