паруса js 0.10.0-rc7 не могут удалить ассоциации «многие ко многим»

Я использую 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().

Есть идеи?


person user2867106    schedule 23.05.2014    source источник
comment
Какой у Вас вопрос? Не удаляется ли учитель из центра при его сохранении? Обратите внимание, что вызов remove для экземпляра фактически не удаляет связанную модель из этого экземпляра; он просто устанавливает внутренние критерии для сохранения удаления при вызове .save().   -  person sgress454    schedule 23.05.2014
comment
да, учитель не удаляется из коллекции (работает в rc5!). даже после вызова save() учитель не удаляется. Это была открытая проблема, которая была исправлена ​​в rc5, но теперь возникла снова. Опять же, если я перехожу на rc5, тот же код проходит.   -  person user2867106    schedule 23.05.2014
comment
более того, я делаю это точно так же, как в документации здесь: github.com/ вздор/ватерлиния-docs/blob/мастер/   -  person user2867106    schedule 23.05.2014
comment
Я понял вашу точку зрения, но, тем не менее, save() не удаляет учителя из центра, как это было в rc5.   -  person user2867106    schedule 23.05.2014


Ответы (1)


Похоже, это была ошибка в Waterline, как подробно описано в этом отчете. Спасибо за отчет и за вашу поддержку - ошибка была исправлена, и вскоре должен быть выпущен новый RC. Тем временем вы можете самостоятельно применить патч, изменив строку 104 в lib /waterline/model/lib/defaultMethods/save.js из Waterline RC4 в:

addAssociations: ['buildAssociationOperations', 'updateRecord', function(next, results) {

или проверьте главную ветку Waterline на https://github.com/balderdashy/waterline.git и замените копию, существующую в папке node_modules вашей установки Sails.

person sgress454    schedule 26.05.2014