Я использую Sails@beta 0.10.0-rc5, я обновился до rc7, и мои модульные тесты не прошли ассоциацию «многие ко многим»!
У меня есть отношение «многие ко многим» между моделями «Центр» и «Учитель».
** Я ДОБАВИЛ ВЫВОДЫ ПО ОТЛАДКЕ НИЖЕ **
Центрконтроллер.js:
sails.log.info("before remove teachers: ", center.teachers);
sails.log.info("removing teacher = '", req.param('teacher_id'));
center.teachers.remove(req.param('teacher_id'));
sails.log.info("after remove teachers: ", center.teachers);
center.save(function(err) {if(err)... sails.log.info("IN SAVE FUNCTION"); ...});
ВЫХОД:
before remove teachers: [ { id: '537f19dbeb09ff341598c77b' },
add: [Function: add],
remove: [Function: remove] ]
removing teacher = 537f19dbeb09ff341598c77b
after remove teachers: [ { id: '537f19dbeb09ff341598c77b' },
add: [Function: add],
remove: [Function: remove] ]
** ВЫВОДЫ ПО ОТЛАДКЕ **
ватерлиния\lib\waterline\model\lib\associationMethods\remove.js
// line 240
// Build up criteria and updated values used to create the record
var criteria = {};
criteria[associationKey] = pk;
criteria[attribute.on] = this.proto[this.primaryKey];
console.log('criteria: ', criteria);
ВЫХОД:
criteria: { teacher_centers: '537f24b98e64e7fc1de20718',
center_teachers: '537f19dbeb09ff341598c77b' }
Проблема (мое предположение):
Последний вывод из remove.js печатается после текста «IN SAVE FUNCTION» из center.save().
Есть идеи?
remove
для экземпляра фактически не удаляет связанную модель из этого экземпляра; он просто устанавливает внутренние критерии для сохранения удаления при вызове.save()
. - person sgress454   schedule 23.05.2014