【问题标题】:MongoDB Realm Functions: How to query the document count of a collectionMongoDB Realm Functions:如何查询集合的文档数
【发布时间】:2021-06-29 18:39:45
【问题描述】:

我尝试使用这个来实现:

const mongodb = context.services.get("mongodb-atlas");
const itemsCollection = mongodb.db("natcocuDB").collection("members");

我试图把它放在一个对象中

let memberToInsert = arg;
memberToInsert.memberID = itemsCollection.count({}) + 1;

那么结果是这样的:

memberID : [object Promise]1"

所以 count 函数是一个 Promise。我试图“等待”计数,但领域的功能编辑器会产生错误。

错误说它缺少一些“;”。

所以我尝试通过为计数创建一个异步函数来将其分开。

async function getDocumentCount(collection) {
  return await collection.count({}) + 1;
  
}

但结果是一样的只有一个对象:

memberID : Object

您知道如何获取文档数量吗?谢谢!

【问题讨论】:

  • 请记住用您的编码平台标记问题,以便过滤到最有可能提供帮助的用户。

标签: javascript mongodb function promise realm


【解决方案1】:

使用await

Db 查询是一个返回 Promise 的异步操作。因此,为了得到它的响应,请使用awaitcallback

let memberToInsert = arg;
const count = await itemsCollection.count({});
memberToInsert.memberID = count + 1;

https://docs.mongodb.com/realm/functions/#behavior

【讨论】:

  • 嗨图沙尔。如果我添加“等待”,我会产生错误。 (我编辑了问题以显示错误)。所以我创建了一个单独的异步函数,但返回值也是一个对象。
  • @nypogi 尝试打印输出async function getDocumentCount(collection) { const count = await collection.count({}); console.log('count', count); return count + 1; }
  • 是一样的。它返回一个对象。不算数。我想知道为什么在返回之前不先等待 .count({}) 。
【解决方案2】:

已经解决了。我刚刚使我的父函数异步。 “等待”奏效了。谢谢。

【讨论】:

    猜你喜欢
    • 2019-06-15
    • 2011-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-22
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多