我目前在我的sails项目中创建了以下表格,我有一个名为“Users”的表格和一个名为“Attendance”的表格。这些表存储在MySQL数据库中。 每个用户可以成为众多出席者的一部分,每个出席者可以有多个用户。我应该如何将属性存储在sails.js中的多对多关系中?
这是通过下面的代码实现:
考勤模式:
attributes: {
attendees: {
collection: 'user',
via: 'attendancelist',
dominant: true
}
用户模式:
attributes{
attendancelist: {
collection: 'attendance',
via: 'attendees'
}
}
这将创建一个名为表:attendence_attendees__user_attendancelist现在
我希望商店获得每个用户的“状态”。该状态将是一个布尔值,用于描述出席中的用户是否存在。
我想将每个用户的状态存储在“attendence_attendees__user_attendancelist”表中。
这是可能的还是有更好的方式来存储状态?
我设法创建了一个自定义关联表,但是现在sails不再向关联表中添加数据。我使用下面的代码:
//Attendance model
attributes: {
attendees: {
collection: 'user',
via: 'attendancelist',
through: 'userattendance'
}
//User model
attributes{
attendancelists: {
collection: 'attendance',
via: 'attendees',
through: 'userattendance'
}
}
//Userattendance model
attributes:{
attendancelist: {
model: 'attendance',
foreignKey: true,
collumnName: 'attendance_id'
},
attendees: {
model: 'user',
foreignKey: true,
collumnName: 'user_id'
},
status: {
type: 'boolean',
defaultsTo: false
}
}
//controller method to add data:
getGroupAttendees: function(req, res){
Group.findOne({id: req.param('groupID')})
.populateAll()
.exec(function getGroup(err, group){
if(err) return res.negotiate(err);
if(!groep) return res.json(401, {err:'group not found'});
var users = [];
group.attendees.forEach(function(user){
users.push(_.pick(user, ['id']));
})
var attendancelistOBJ = {
planning: 1,
attendees: users
}
Attendance.create(attendancelistOBJ, function agendaCreated(err, lijst){
if(err) return res.negotiate(err);
lijst.save(function(err, lst){
if(err) return next(err);
return res.json(attendancelistOBJ.attendees);
});
});
})
}
用于与自动生成的关联表完美工作的上述控制器的方法,但与自定义一个就不再添加用户和列表表。
我确实有一个关联表,它是由水线自动生成的。 这是上面提到的“attendence_attendees__user_attendancelist”表。我想在此表中添加一列,但我不知道如何在Sails中更改此表。 –