温馨提示:本文翻译自stackoverflow.com,查看原文请点击:mongoose - MongoDB countDocuments() is returning an object, not a number
mongodb mongoose

mongoose - MongoDB countDocuments()返回一个对象,而不是一个数字

发布于 2020-04-07 11:47:55

我开始学习mongoose / MongoDB聚合函数,并且遇到一些基本困难。例如,我正在尝试执行以下操作:

var myModels= require('./models/myModel');
var myCount = myModels.countDocuments({userID: "A"});
console.log(myCount );

我只想计算userID为“ A”的文档数,但是当它打印到控制台时,它是作为一个整体对象打印的,而不仅仅是数字计数。我已经在这里阅读了答案但仍然无法解决此问题(而且,与该问题不同,有没有一种方法可以直接返回计数,而不必预先定义变量并将其设置在回调函数中?)

我正在尝试按照此处的指南进行操作,看不到我要去哪里错了。

查看更多

提问者
garson
被浏览
791
tom slabbaert 2020-02-01 02:47

这是因为的返回值countDocuments是一个承诺而不是一个数字。

您要么需要等待该Promise,要么使用像这样的回调语法:

var myModels= require('./models/myModel');
// this required the code to be inside an async function
var myCount = await myModels.countDocuments({userID: "A"}); 
console.log(myCount);

要么:

var myModels= require('./models/myModel');
myModels.countDocuments({userID: "A"})
     .then((myCount) =>{console.log(myCount);});