为用户公开模型的部分数据,为管理员sails.js公开所有数据

时间:2014-12-07 14:55:47

标签: model sails.js policy

我有一个模型"用户":

module.exports = {

attributes: {
    facebook_id: {
        type: 'integer',
        required: false
    },
    name: {
        type: 'string',
        required: false
    },
    email: {
        type: 'string',
        required: true,
        unique: true
    },
    pass: {
        type: 'string',
        required: false
    },
    writer: {
        model: 'writer'
    },
    toObject: function () {
        return {
            name: this.name,
            id: this.id
        };
    }
}

};

我试图公开属性' name'并且' id'对所有用户,但我希望管理员看到所有这些,我该怎么做? 目前它只公开名称'并且' id'对每个人或仅对管理员(取决于policies.js)。

1 个答案:

答案 0 :(得分:0)

这需要在控制器中完成。在构建休息应用程序时,我喜欢创建“RestModels”,这些对象只处理与http请求之间的映射。这里有一些很好的休息模型:

//admin rest model
module.exports = function(user){

  this.writer = user.writer;
  ..........

}



 //regular rest model
  module.exports = function(user){
  //only expose attributes you want
   this.name = user.name;
   this.id = user.id;
  }

然后根据用户是管理员还是用户选择要返回的休息模型!