【问题标题】:Get values of array of Firestore Database extra获取 Firestore 数据库额外数组的值
【发布时间】:2019-06-22 19:28:29
【问题描述】:

我正在获取 Firestore 的值并使用以下 JavaScript 代码将它们添加到数组列表中:

var mdlPoints = [];
var schrPoints = [];

db.collection("users").doc(user_uid).collection("grades").get().then(function(querySnapshot) {
        querySnapshot.forEach(function(doc) {
            const data = doc.data();
            mdlPoints.push(data.mdl);
            schrPoints.push(data.klu);

            console.log("mdl: " + data.mdl);
            console.log("klu: " + data.klu);
        });  

结构如下:

如您所见,所有字段都存储在 ArrayList 中(klu: [4,9] 或 mdl: [5])。正如您在我的 JavaScript 代码中看到的那样,我想将单个数字添加到 js 中的数组列表中。

这非常适用于只有一个内容的数组列表,例如图片中的 mdl,内容编号为 5。但在具有更多内容编号的数组列表中,例如图片中的 klu,编号为 4 和 9 .

所以当我打印输出值时,我会得到如下信息:klu: 4,9。并且该值通过以下行添加到数组列表中:schrPoints.push(data.klu); 但是 在这种情况下,我可以NOT4,9 添加到列表中。我必须将49 分开,不用逗号。

如何做到这一点?

【问题讨论】:

  • 如果你 console.log(data.klu[0]);console.log(data.klu[1]); 会发生什么?
  • @Hensler Software 是的,我修复了它。谢谢

标签: javascript database arraylist google-cloud-firestore


【解决方案1】:

在@Hensler Software 的回答下,我以这种方式解决了我的问题:

db.collection("users").doc(user_uid).collection("grades").get().then(function(querySnapshot) {
    querySnapshot.forEach(function(doc) {
        const data = doc.data();

        for (var i = 0; i < data.mdl.length; i++) {
          mdlPoints.push(data.mdl[i]);
        }

        for (var i = 0; i < data.klu.length; i++) {
          schrPoints.push(data.klu[i]);
        }
    });

【讨论】:

  • 没问题。很高兴听到。
【解决方案2】:

如果是单个值,可以使用["4,9"]的数组方法split()来分隔49

像这样:

var newKluArray = data.klu.split(',') // [4, 9] array with 2 values

如果已经完成或数组中已经有多个值,则可以单独选择数字,如下所示:

newKluArray[0]; // 4
newKluArray[1]; // 9

因此您可以随意操作或添加它们。

【讨论】:

  • 从firestore返回的内容不是字符串而是数组。
  • 我明白了,但是为什么你不能仅仅通过索引来操作每个值呢?
猜你喜欢
  • 2021-03-23
  • 1970-01-01
  • 2014-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-15
  • 1970-01-01
  • 2019-12-24
相关资源
最近更新 更多