Node.js 获取集合中的所有项目

Node.js 获取集合中的所有项目,node.js,mongoose,bluebird,Node.js,Mongoose,Bluebird,我试图用一些默认的虚拟数据填充数据库,以加快测试速度。这是一个使用承诺的项目的一部分,我第一次尝试使用承诺 假设我有类似于: Thing.create({ name: 'thing 1' }, { name: 'thing 2' }).then((things) => { console.log(things); }); 为什么控制台日志只输出东西1,而不输出整个集合 根据mongoose文档,该方法返回一个似乎对我没有帮助的承诺。为了让mongoose返回一个承诺,您需要在

我试图用一些默认的虚拟数据填充数据库,以加快测试速度。这是一个使用承诺的项目的一部分,我第一次尝试使用承诺

假设我有类似于:

Thing.create({
  name: 'thing 1'
}, {
  name: 'thing 2'
}).then((things) => {
  console.log(things);
});
为什么控制台日志只输出
东西1
,而不输出整个集合


根据mongoose文档,该方法返回一个似乎对我没有帮助的承诺。

为了让mongoose返回一个
承诺
,您需要在mongoose实例中相应地设置:

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;
此外,如果要同时创建多个文档,应将
数组
传递给
.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 } ]

你试过回叫吗?承诺的用法是正确的,你更喜欢它而不是回叫。记住设置猫鼬使用承诺。