如何在Firebase Node.js中按特定标准对文档进行计数?

编程入门 行业动态 更新时间:2024-10-27 10:23:31

如何在Firebase Node.js中按特定标准对<a href=https://www.elefans.com/category/jswz/34/1770955.html style=文档进行计数?"/>

如何在Firebase Node.js中按特定标准对文档进行计数?

我想用javascript中的firebase nodejs实现云功能,以计算具有其属性之一的特定值的文档数。我正在寻找这样的东西:

exports.countDocumentsWithSpecificProp= functions.https.onCall((data, context)=>{
    var num = admin.firestore().collection('users').where("propToCheck", "==", data["propToCheck"]).length;
    return num;
});

其中'propToCheck'是用户属性,并记录我从应用程序中给出的参数。

回答如下:

您拥有的代码接近可行的代码。这将满足您的要求:

exports.countDocumentsWithSpecificProp= functions.https.onCall(async (data, context)=>{
    const snap = await admin.firestore().collection('users').where("propToCheck", "==", data["propToCheck"]).get();
    return {count: snap.docs.length};
});

但是,这会为每个与查询匹配的文档产生完整文档阅读次数,并相应地向您收费。它可能效率不高,而且,如果您谈论的是成千上万或更多的文档,那么它太昂贵且太慢而无法成为合理的解决方案。

通常,在Firestore中,您需要在编写文档时动态增加计数器。例如,您可以通过在创建文档时增加计数来将计数存储在单独的集合中。在一个简化的示例中:

exports.countPropToCheck = functions.firestore.document('users/{userId}').onCreate(async (snap, context) => {
  const valueToCount = snap.get('propToCheck');
  await admin.firestore().collection('propToCheckCounts')
    .doc(valueToCount).update({count: admin.firestore.FieldValue.increment(1)});
});

exports.countDocumentsWithSpecificProp = functions.https.onCall(async (data, context)=>{
    const snap = await admin.firestore().collection('propToCheckCounts').doc(data["propToCheck"]).get();
    return snap.data();
});

这里的警告是,显然,您必须提前知道要计算该字段上的内容。另一个警告是,不能保证函数只能执行一次,因此,如果您需要非常精确的计数,则需要定期手动重新计数。

有关在Firestore中进行计数的更多信息,请参见分布式计数器上的these docs。>>

更多推荐

如何在Firebase Node.js中按特定标准对文档进行计数?

本文发布于:2024-05-07 03:36:31,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1754195.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文档   标准   如何在   Node   Firebase

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!