如何在 Sails.js 中允许更改属性?

How make permission for change attribute in Sails.js?

例如: 我们有模型 个人资料。每个用户配置文件都有属性 alias_name,只能设置一次(创建时),并且不能更改(更新时).

当然我可以覆盖控制器中的操作 .update() 并从 req.body 中删除属性。但是后来失去了所有的魔法蓝图API.

更多 我可以创建将从 req.body 中删除该属性的特殊策略。但不确定是否正确。

也许应该在 Profile 模型的方法 .beforeUpdate() 中制作?

怎么办比较好?分享你的经验?

您可以针对此属性使用 custom validation rule 的方法

// /api/models/profile.js

module.exports = {
    attributes: {
        alias_name: {
            type: 'string',
            nonEditable: true
        }
    },
//  ...
    types: {
        nonEditable: function(prop) {
            return prop === null;
        }
    }
}

因此,此字段只能更改一次(如果您没有为 alias_name 指定 defaultsTo)。