2016-10-12 2 views
1

Я пытаюсь заполнить db некоторыми стандартными фиктивными данными, чтобы ускорить тестирование. Это часть проекта, который использует https://github.com/angular-fullstack/generator-angular-fullstack, и я пытаюсь использовать обещания в первый раз.Получить все элементы в коллекции

Предполагая, что у меня есть что-то вроде:

Thing.create({ 
    name: 'thing 1' 
}, { 
    name: 'thing 2' 
}).then((things) => { 
    console.log(things); 
}); 

Почему журнал консоли выводится только thing 1 и не вся коллекция?

В соответствии с документами mongoose http://mongoosejs.com/docs/api.html#model_Model.create метод возвращает обещание, которое, похоже, не помогает мне.

+0

Вы пытались с обратным вызовом? – Mirodil

+0

Использование обещания верное, предпочитайте его над обратным вызовом. Помните настройку Mongoose для использования Promises. – Aichholzer

ответ

1

Для того, Mongoose, чтобы вернуть Promise вам нужно установить это, соответственно, в вашем Mongoose например:

const mongoose = require('mongoose'); 
mongoose.Promise = global.Promise; 

Кроме того, если вы хотите создать несколько документов одновременно, вы должны пройти array к .create метод:

let things = [ 
    { 
    "name": "Thing 1" 
    }, 
    { 
    "name": "Thing 2" 
    }, 
    { 
    "name": "Thing 3" 
    } 
]; 

Thing.create(things).then(newThings => { 
    console.log(newThings); 
}); 

// Outputs 
[ { name: 'Thing 1', _id: 57fd82973b4a85be9da73b25 }, 
    { name: 'Thing 2', _id: 57fd82973b4a85be9da73b26 }, 
    { name: 'Thing 3', _id: 57fd82973b4a85be9da73b27 } ] 
Смежные вопросы