我目前在我的sails项目中创建了以下表格,我有一个名为&#34的表格;用户"和一张名为"出席的表#34;这些表存储在MySQL数据库中。 每个用户都可以参加许多出席,每次出席都可以有很多用户。
使用以下代码实现:
出勤模式:
attributes: {
attendees: {
collection: 'user',
via: 'attendancelist',
dominant: true
}
用户模型:
attributes{
attendancelist: {
collection: 'attendance',
via: 'attendees'
}
}
这将创建一个名为:attendence_attendees__user_attendancelist
的表现在我希望商店有"状态"每个用户。状态将是一个bool,描述出席的用户是否存在。
我想将每个用户的状态存储在" 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);
});
});
})
}
上述控制器方法用于与自动生成的关联表完美配合,但使用自定义控制器方法时,它不再将用户和列表添加到表中。
答案 0 :(得分:0)
不确定我是否完全关注,但是如果你有多对多的关系,那么你需要一个将两个表连接在一起的关联表,并且该表中的主键是来自两个主键的复合键。 BF_KEY key = {{0}};
BF_set_key(&key, 16, key_data);
const int block_size = 8;
unsigned char previous[block_size] = {0}, decrypted[block_size] = {0};
for (auto it = replay_data.begin(); it != replay_data.end(); it += block_size) {
BF_ecb_encrypt(reinterpret_cast<unsigned char*>(&(*it)), decrypted, &key, BF_DECRYPT);
std::transform(previous, previous + block_size, decrypted, decrypted, std::bit_xor<unsigned char>());
std::copy_n(decrypted, block_size, previous);
std::copy_n(decrypted, block_size, reinterpret_cast<unsigned char*>(&(*it)));
}
和User
个表格。也许您可以将您的状态存储在该关联表中。
这是否有意义和/或有帮助?