我是Sails的新手并创建了一个简单的应用程序
我现在卡在数据模型中
User
模型如下:
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'
}
}
};
我还需要一个名为TinyUser
的模型,它从User获取一些属性(就像用户的外键一样),这样我就可以访问TinyUser
而不是直接访问User
。登记/>
TinyUser Model如下:
module.exports = {
tableName: 'User',
attributes: {
firstName:{
type: 'string'
},
lastName: {
type: 'string'
},
email: {
type: 'email'
}
}
};
ProjectMember模型如下:
module.exports = {
attributes: {
projectId: {
model: 'Project'
},
userId: {
model: 'TinyUser'
},
projectRole: {
model: 'ProjectRole'
},
}
};
在Sails中,无论如何我可以在TinyUser
中保存数据而不实际创建但仅保存用户表数据的某些属性?
要说清楚,如果有另一个名为Task的表并且它正在尝试访问用户数据,那么TinyUser作为模型而不是用户是更好的选择,因为它只包含所需信息。用于任务而不是存储用户所做的所有其他字段。
有什么方法可以解决这个问题吗? 在此先感谢
答案 0 :(得分:1)
你是说你需要拥有" TinyUser"继承自"用户"模型?
你可以这样做。
/api/services/baseUserModel.js:
module.exports = {
attributes: {
firstName: 'string',
lastName: 'string',
email: {
type: 'email',
required: true
},
password: 'string',
passwordSalt: 'string',
projects: {
collection: 'ProjectMember',
via: 'userId'
}
}
};

/api/models/TinyUser.js:
var baseUserModel = require('../services/baseUserModel'),
_ = require('lodash');
module.exports = _.merge({
tableName: 'User',
attributes: {
firstName: 'string',
lastName: 'string',
email: {
type: 'email',
required: true
}
}
}, baseUserModel);

ProjectMember模型应为:
module.exports = {
attributes: {
projectId: {
model: 'project'
},
userId: {
model: 'tinyuser'
},
projectRole: {
model: 'projectrole'
}
}
};