2014-10-04 3 views
0

У меня есть простая потребность добавлять теги к пациентам. Я следил за документацией «Паруса и ватерлиния», касающейся ассоциаций «многие ко многим», но в какой-то момент она не работает (ошибок нет). Я использую MongoDB для хранения данных. Код ниже:Sails.js - многие-ко-многим не удается сэкономить

Tag Модель

module.exports = { 

attributes: { 
    name: 'STRING', 
    color: { 
     type: 'STRING', 
     defaultsTo: '#777777' 
    }, 
    tagged: { 
     collection: 'patient', 
     via: 'tags', 
     dominant: true 
    } 

} 
}; 

Модель пациента

module.exports = { 

attributes: { 
    name: 'STRING', 
    tags: { 
     collection: 'tag', 
     via: 'tagged' 
    } 
} 
}; 

И это метод управления, который пытается связать данные:

module.exports = { 

addToPatient: function(req, res) { 
    Patient.findOne({id: req.param('patientId')}).exec(function(err, patient) { 

     // Queue up a record to be inserted into the join table 
     patient.tags.add(req.param('tagId')); 

     // Save the user, creating the new associations in the join table 
     patient.save(function(err) {}); 
    }); 

    res.send("tag assigned"); 
} 
}; 

Я проверил ответы при различных перерывах, и все, кажется, проходит очень хорошо. Пациент найден. Функция сохранения показывает ассоциацию тегов в объекте пациента, но в базе данных ничего не добавляется. Я предполагаю, что я увижу либо созданную таблицу соединений, либо что-то в коллекциях пациентов/тегов, чтобы обозначить ассоциацию, но я ничего не вижу. Я так смущен. Если я получаю HTTP-сообщение, я получаю ответ «с тегом». Что мне не хватает?

+1

Прекрасно работает для меня на Mongo с вашим точным кодом и создает коллекцию 'patient_tags__tag_tagged'. Вы должны переместить 'res.send' внутри обратного вызова для' patient.save', хотя - сейчас он всегда будет говорить «назначенный тег», даже если произошла ошибка. – sgress454

ответ

0

отлично работает для меня, но вы правы в тегов и пациента коллекций, вы не увидите населенное поле с ассоциациями. Вы увидите новые коллекции объединений, которые создаются, которые содержат такие отношения, как @ sgress454.

Смежные вопросы