首页 > 解决方案 > javascript中的json格式

问题描述

我需要用 Firebase 信息组装一个 JSON 格式的字符串。我可以这样做,但是字符串结构出错了,我得到:

[
  '7801',
  {
    keycode: '111111',
    dataStatus: 'Test1'
  },
  '7802',
  {
    keycode: '222222',
    dataStatus: 'Test2'
  }
]

但它应该是:

{
  '7801':
  {
    keycode: '111111',
    dataStatus: 'Test1'
  },
  '7802':
  {
    keycode: '222222',
    dataStatus: 'Test2'
  }
}

我的代码:

const admin = require('firebase-admin');
const serviceAccount = require('./firestore/firestoreTeste.json');
admin.initializeApp({
    credential: admin.credential.cert(serviceAccount)
});

const db = admin.firestore();

let results = [];
let documents = db.collection('place2').get()
    .then(snapshot => {
        snapshot.forEach(doc => {
            var namePlace;
            namePlace = doc.id.toString();
            let subCollectionDocs = db.collection('place2').doc(doc.id).collection("locals").get()
                .then(snapshot => {
                    results = []
                    snapshot.forEach(doc => {
                        results.push(doc.id, doc.data());

                    })
                    console.log(results);
                }).catch(err => {
                    console.log("Error subcolection", err);
                })
        });
    }).catch(err => {
        console.log("Error documents", err);
    });

我是 JS 的初学者,我无法改变这种结构。

有谁知道我应该怎么做?

谢谢!

标签: javascriptjsonfirebasegoogle-cloud-firestore

解决方案


声明results为对象,这似乎是您真正想要做的:

let results = {};

然后,不要push()将结果放入 Array 结构中,而是在 中创建一个键和一个关联的值results

results[doc.id] = doc.data();

进一步阅读:


推荐阅读