2017-01-18 12 views
0

В настоящее время у меня есть две коллекции: Schools и Contacts. Коллекция Schools уже заполнена тысячами данных, а Contacts - это новая коллекция, которая по-прежнему пуста.Паруса, создающие данные во многих отношениях

Теперь есть изменение схемы для обоих из них. Вот детали схемы:

// ----------- Schools.js 
module.exports = { 
    attributes: { 
    user: { 
     model: 'users' 
     // Của User đã tạo 
    }, 

    essential: { 
     type: 'string' 
     // Lưu toàn bộ thông tin của essential 
    }, 

    contacts: { 
     collection: 'contacts', 
     via: 'schools' 
    }, 

    pipeline: { 
     type: 'string', 
     defaultTo: "" 
    }, 

    status: { 
     type: 'integer', 
     defaultsTo: 1 
     // 0: un-active, 1: active 
    } 
    } 
}; 

// ----------- Contacts.js 

module.exports = { 
    attributes: { 
     title: { 
      type: 'string' 
     }, 

     firstName: { 
      type: 'string' 
     }, 

     lastName: { 
      type: 'string' 
     }, 

     email: { 
      type: 'string' 
     }, 

     position: { 
      type: 'string' 
     }, 

     landlinePhone: { 
      type: 'string' 
     }, 

     mobilePhone: { 
      type: 'string' 
     }, 

     externalCompany: { 
      type: 'string' 
     }, 

     schools : { 
      collection: 'schools', 
      via: 'contacts', 
      dominant: true 
     }, 

     user: { 
      model: 'users' 
     }, 

     activities: { 
      collection: 'activities', 
      via: 'contact' 
     }, 

     status: { 
      type: 'integer', 
      defaultsTo: 1 
      // 0: remove, 1: active, 2: unactive 
     } 
    } 
}; 

И вот мой код при создании нового контакта:

Contacts.create(contactData).exec(function (e1, newContact) { 
    if (e1) { 
     console.log("e1 ::: ", e1); 
    }; 

    // newContact is filled with contact new data.. 
    console.log("Contact data has been created", newContact, schoolId); 

    // Adding schools to newContact (schoolId has a value here); 
    newContact.schools.add(schoolId); 

    // Save 
    newContact.save(function (err) { console.log('err', err) }); 
}); 

Однако, когда я проверяю на моей базе данных, contacts был создан, но без schools атрибутов. И связанный с ним schools также не имеет атрибута contacts.

Я пробовал следующее:

newContact.schools.add([schoolId]); 
// or -- 
newContact.schools.add(schoolObj); 
// or -- 
newContact.schools.add([schoolObj]); 

Я пытался переключить атрибут dominant между этими двумя коллекциями и делать исполнение обратное, как,

school.contacts.add(newContact); 

Я также пробовал эти решения и нет удач;

Я пропускаю что-то здесь? Любое предложение оценивается.

ответ

1

Ваш код в порядке, он прикрепляет schools к contacts.

В sails console, запускаю это:

Contacts.find(contactId).populateAll().exec(console.log); 

Если он печатает контакт вместе с школами массива, заполненного, данные сохранялись в БД. Это может быть в отдельной коллекции, а не внутри Contacts в MongoDB.

PS: pipeline определение имеет опечатка в defaultTo (должно быть defaultsTo)

+0

Я так глупо .. я просто понял, что многие ко многим в других коллекциях. Спасибо за Ваш ответ.. –