Express mongoose查询数组作为Promise.all的参数';似乎工作不正常

Express mongoose查询数组作为Promise.all的参数';似乎工作不正常,express,mongoose,promise,ecmascript-6,Express,Mongoose,Promise,Ecmascript 6,我和express和mongoose合作,有问题 作为一个API服务器,我实现了一个路由器js文件。其中一个帖子是一次在db中保存四个对象 据我所知,像save()这样的mongoose查询函数可以用作promise对象 所以我制作了一个mongoose查询数组,并将其作为参数放入Promise.all中,但它不起作用。(运行此代码后,在db上找不到任何记录。) 下面是我的代码,请检查它并教我为什么它不工作 import { Router } from 'express'; import Col

我和express和mongoose合作,有问题

作为一个API服务器,我实现了一个路由器js文件。其中一个帖子是一次在db中保存四个对象

据我所知,像save()这样的mongoose查询函数可以用作promise对象

所以我制作了一个mongoose查询数组,并将其作为参数放入Promise.all中,但它不起作用。(运行此代码后,在db上找不到任何记录。)

下面是我的代码,请检查它并教我为什么它不工作

import { Router } from 'express';
import Collection from '../models/collection.model';

const router = new Router();

router.post('/api/collections/basic-pick/:userId', (req, res) => {
  const pickedMons = req.body.pickedMons;
  const collections = [];
  let condition = 1;
  for (const mon of pickedMons) {
    condition = Math.floor((Math.random() * 5) + 1);
    const collection = new Collection({
      _monId: mon._id,
      _userId: req.params.userId,
      condition,
    });
    // this log prints right objects
    console.log('collection: ' + collection);
    collections.push(collection);
  }
  const proms = [];
  for (const collection of collections) {
    // collection.save() function returns promise, right?
    proms.push(collection.save);
  }
  Promise.all(proms).then(() => {
    return res.json({ success: true });
  });
});

export default router;

我找到了答案。我必须将代码'prom.push(collection.save)'更改为'prom.push(collection.save())'。现在它成功了。很高兴你找到了答案。因此,正如您现在所知道的,
save()
是在MongoDB中处理集合时使用的一种方法,与所有需要参数的方法一样。你应该发布你的答案,这样其他人可以从中受益。我还建议使用测试驱动开发。我已经找到了答案。我必须将代码'prom.push(collection.save)'更改为'prom.push(collection.save())'。现在它成功了。很高兴你找到了答案。因此,正如您现在所知道的,
save()
是在MongoDB中处理集合时使用的一种方法,与所有需要参数的方法一样。你应该发布你的答案,这样其他人可以从中受益。我还建议使用测试驱动开发。