Sails JS:将参数传递给 toJSON
Sails JS: Pass parameter to toJSON
sailsjs 模型属性方法 toJSON 在发送回客户端之前处理模型属性非常方便。但是,此方法不带任何参数,我无法将附加信息传递给可用于处理属性的方法。
在我的特定情况下,我需要通过比较登录用户 ID (req.user.id) 来检查是否应该发送属性。例如
toJSON: function () {
var obj = this.toObject();
var result = {};
if (req.user.id === 123) { // How can I access req from inside toJSON?
// do something here ...
}
}
我找不到从 toJSON 内部访问 req 参数的方法。有什么建议吗?
Sails 有意不将 req 属性公开为全局属性,因此无法从 toJSON 中访问它:
How to access session variables outside controller
根据您尝试实现的功能,您或许可以改用策略:
在类似的情况下,我发现自己使用了一种解决方法。您可以将控制器中已登录用户的 ID 添加到模型中:
YourModel.findOne().exec(function (err, yourModelObject) {
yourModelObject.loggedInUserId = req.user.id;
res.send(yourModelObject);
});
然后可以在您的 toJSON 方法中访问它,您可以像这样使用它:
toJSON: function () {
var obj = this.toObject();
var result = {};
if (obj.loggedInUserId === 123) {
// do something here ...
}
delete obj.loggedInUserId;
return obj;
}
这有点难,但对我有用。请注意,用户不能以某种方式在有问题的模型上设置相同的值(例如,通过在模型中使用 schema: true
),以防止代码中出现安全漏洞。
sailsjs 模型属性方法 toJSON 在发送回客户端之前处理模型属性非常方便。但是,此方法不带任何参数,我无法将附加信息传递给可用于处理属性的方法。
在我的特定情况下,我需要通过比较登录用户 ID (req.user.id) 来检查是否应该发送属性。例如
toJSON: function () {
var obj = this.toObject();
var result = {};
if (req.user.id === 123) { // How can I access req from inside toJSON?
// do something here ...
}
}
我找不到从 toJSON 内部访问 req 参数的方法。有什么建议吗?
Sails 有意不将 req 属性公开为全局属性,因此无法从 toJSON 中访问它: How to access session variables outside controller
根据您尝试实现的功能,您或许可以改用策略:
在类似的情况下,我发现自己使用了一种解决方法。您可以将控制器中已登录用户的 ID 添加到模型中:
YourModel.findOne().exec(function (err, yourModelObject) {
yourModelObject.loggedInUserId = req.user.id;
res.send(yourModelObject);
});
然后可以在您的 toJSON 方法中访问它,您可以像这样使用它:
toJSON: function () {
var obj = this.toObject();
var result = {};
if (obj.loggedInUserId === 123) {
// do something here ...
}
delete obj.loggedInUserId;
return obj;
}
这有点难,但对我有用。请注意,用户不能以某种方式在有问题的模型上设置相同的值(例如,通过在模型中使用 schema: true
),以防止代码中出现安全漏洞。