我是Sails的新手,面对模特的小问题 我已经定义了一个用户模型如下:
module.exports = {
attributes: {
firstName: {
type: 'string'
},
lastName: {
type: 'string'
},
email: {
type: 'email',
required: true
},
password: {
type: 'String'
},
passwordSalt: {
type: 'String'
},
projects:{
collection: 'ProjectMember',
via: 'userId'
}
}
};
我还有一个名为Plan的模型,它将用户作为其外键:
module.exports = {
planId: { type: 'string'},
userId: { model: 'User'}
};
现在,Plan会存储所有用户数据。有没有什么办法可以限制计划模型只保留一些用户详细信息,如firstName,lastName,email和projectMembers,而不是存储其他个人信息。像密码,密码盐等?
提前致谢
答案 0 :(得分:1)
计划不存储用户数据,它只存储对用户模型中找到的用户数据的引用。
答案 1 :(得分:1)
计划模型不会存储用户数据。它只存储在其模式中定义的数据值,即planId和userId。如果您只想返回一些用户详细信息,那么您可以这样做:
在计划模型中:
首先在模型中定义toApi方法:
module.exports = {
attributes : {
planId: { type: 'string'},
userId: { model: 'User'},
toApi :toApi
}
};
function toAPi(){
var plan = this.toObject();
return {
firstName : plan.userId.firstName,
lastName : plan.userId.lastName,
email : plan.userId.email,
projectMembers : plan.userId.projectMembers
};
}
然后在方法中,执行以下操作:
function getUserData(){
Plan
.find()
.populate('userId')
.then(function(data){
return data;
})
}
在计划控制器中,执行以下操作:
Plan
.getUserData()
.then(function(userData){
return res.ok(userData.toApi());
})