2016-04-25 58 views
0

我目前在我的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); 
        }); 

      }); 
     }) 
} 

用于与自动生成的关联表完美工作的上述控制器的方法,但与自定义一个就不再添加用户和列表表。

回答

0

不确定我是否完全遵循,但如果您有多对多的关系,则需要一个将这两个表连接在一起的关联表,并且该表中的主键是来自主键UserAttendance表。也许你可以将你的状态存储在关联表中。

这是否有意义,和/或帮助?

+0

我确实有一个关联表,它是由水线自动生成的。 这是上面提到的“attendence_attendees__user_attendancelist”表。我想在此表中添加一列,但我不知道如何在Sails中更改此表。 –

相关问题