我有一个场景,我必须用模型的 id 填充模型的属性。对于例如..
在用户模型中:
module.exports = {
attributes: {
activation_link: "string"
},
afterCreate: function(value, cb) {
value.activation_link = "localhost:1337/user/action/"+ value.id;
cb();
}
activate_link 的修改值也必须保存在数据库中。如何才能做到这一点?
根据this https://github.com/balderdashy/waterline/blob/9d5a46fa49cd1f39e1d911bd5bfd547aafc1cea5/test/unit/callbacks/afterCreate.create.js#L18 and this https://github.com/balderdashy/waterline/blob/9d5a46fa49cd1f39e1d911bd5bfd547aafc1cea5/test/unit/callbacks/afterCreate.create.js#L48你的代码应该实际工作:你的操作afterCreate
应该改变结果对象。
UPDATE
嗯...似乎第一个参数不是 Waterline 对象,尽管文档说了什么 https://github.com/balderdashy/waterline/blob/50affb138011440d2a3c74a2390aed54ae846fd6/README.md。从技术上讲,您可以通过 id 从数据库中重新获取记录、更新并保存,而不会产生大量开销(因为它应该在创建时只调用一次)。但我真的会避免在数据库中放入一个依赖于记录ID的字段:这样的数据库变得不可传输,因为你不能保证记录将具有相同的ID。因此,解决方案要么为这些激活链接使用一些令牌(干净的方式),要么只是制作activation_link
一个函数而不将其放入数据库(简单的方法):
module.exports = {
attributes: {
},
activation_link: function() {
if (!this.id)
return false;
return 'localhost:1337/user/action/' + this.id;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)