2017-01-25 12 views
2

Я хотел бы использовать .populate() с парусами JS и MongoDB, и поэтому я сделал что-то вроде этого:парусов JS MongoDB заселить

Я использую последнюю версию парусов и MongoDB и Node.

Мои модели выглядит следующим образом:

// User.js 
module.exports = { 
    attributes: { 
    name: { 
     type: 'string' 
    }, 
    pets: { 
     collection: 'pet', 
     via: 'owner' 
    } 
    } 
}; 


// Pet.js 
module.exports = { 
    attributes: { 
    name: { 
     type: 'string' 
    }, 

    owner: { 
     model: 'user' 
    } 
    } 
}; 

И я использовал следующее, которая является такой же, как в документации:

User.find() 
.populate('pets') 
.exec(function(err, users) { 
    if(err) return res.serverError(err); 
    res.json(users); 
}); 

Но я получаю следующий результат :

[ 
    { 
    "pets": [], 
    "id": "58889ce5959841098d186b5a", 
    "firstName": "Foo", 
    "lastName": "Bar" 
    } 
] 
+0

Сделано вопрос: https://github.com/balderdashy/sails-mongo/issues/449 –

+0

в конфигурации/model.js убедитесь, что у вас есть 'Migrate:«безопасный «' –

ответ

0

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

Pet.find() //or what you want with {} 
.populate('users') 
.exec(err, petsWithUsers) 

Но если нет:

User.find() 
     .populate('pets') 
     .exec(err, users) ... 

Это вернет всех пользователей (User.find()) и только заселить домашних животных типа собак (populate('pets', {type: 'dog'})). В случае, если у вас появятся пользователи без собак.

Более подробная информация и ссылки: here