2014-09-26 4 views
0

у меня есть две коллекции в MongoDB базе данных и модели для каждого из нихsails.js объединения таблиц на MongoDB родной ид

App Модель

module.exports = { 

    tableName: 'app', 
    attributes: { 
     _id : { 
      primaryKey: true, 
      unique: true, 
      type: 'string', 
     }, 
     userId: { 
      model: 'user' 
     }, 
     title: { 
      type: 'string', 
      required: true, 
      unique: true, 
     }, 
     createdDate : 'string' 
    }, 
}; 

и модель пользователя

module.exports = { 

    tableName: 'user', 
    attributes: { 
     id : { 
      primaryKey: true, 
      unique: true, 
      type: 'string', 
      collection: "app", 
      via : "userId" 
     }, 
     password: { 
      type: 'string', 
      required: true 
     }, 
     apps : { 
      collection: "app", 
      via : "userId" 
     } 
    }, 

}; 

Когда я используйте числовые значения для присоединения к этой коллекции, она отлично работает, но когда я пытаюсь сделать это с помощью объекта-объекта mongodb, я получаю пустой результат

Как я называю запрос с соединением

User.find().populate('apps').exec(function(err, result) {}); 

ответ

0

Вам нужно избавиться от обоих определений атрибутов в _id и id в моделях. Waterline автоматически обрабатывает поля первичного ключа (нормализуя их до id), поэтому, если вам не нужно менять тип поля, их можно безопасно исключить. Кроме того, я не уверен, что вы сделали, добавив collection и via в определение id, но первичный ключ никогда не станет ассоциацией.

В противном случае ваши модели выглядят правильно. Если вы избавитесь от этих двух атрибутов, все должно работать нормально.