[英]Accessing a model's attributes from an associated model in Sails.js
我正在使用更新的數據庫適配器(對於PostgreSQL)運行Sails.js的beta版本(v0.10.0-rc3),以便通過Waterline ORM獲得關聯功能。 我正在嘗試根據不同的訪問級別創建基於角色的授權用戶模型。 用戶到角色關聯是一對多的。 我的模特是:
API /模型/ user.js的
module.exports = {
attributes: {
firstName: {
type: 'string',
required: true
},
lastName: {
type: 'string',
required: true
},
fullName: function() {
return this.firstName + " " + this.lastName;
},
email: {
type: 'email',
required: true,
unique: true
},
encryptedPassword: {
type: 'string'
},
role: {
model: 'role'
},
groups: {
collection: 'group',
via: 'users'
}
},
toJSON: function() {
var obj = this.toObject();
delete obj.password;
delete obj.confirmation;
delete obj._csrf;
return obj;
},
beforeCreate: function (values, next) {
// Makes sure the password and password confirmation match
if (!values.password || values.password != values.confirmation) {
return next({err: ['Password does not match password confirmation.']});
}
// Encrypts the password/confirmation to be stored in the db
require('bcrypt').hash(values.password, 10, function passwordEncrypted(err, encryptedPassword) {
values.encryptedPassword = encryptedPassword;
next();
});
}
};
API /模型/ Role.js
module.exports = {
attributes: {
name: {
type: 'string',
required: true,
unique: true
},
users: {
collection: 'user',
via: 'role'
},
permissions: {
collection: 'permission',
via: 'roles',
dominant: true
}
}
};
我知道Waterline還不支持通過關聯 ,但我仍然可以訪問與用戶關聯的角色名稱,對嗎? 例如: user.role.name
我現在能夠檢索角色名稱的唯一方法是對角色對象進行第二次查詢。
要訪問關聯模型,您必須在查詢主模型時populate
關聯,例如:
User.findOne(1).populate('role').exec(function(err, user) {
if (err) {throw new Error(err);}
console.log(user.role.name);
}
協會文檔在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.