0

我能够通过节点成功将以下 json 数据保存到 firestore 数据库。我想以 json 格式将“GeoPoint”保存到 firestore 数据库,但我无法弄清楚我应该如何在下面的 json 文件中写入。

 [ {     "itemID": "MOMOS_V_101",   
         "itemName": "Sangai Momos",   
         "itemPriceHalf": 70,   
         "itemPriceFull": 130,    
         "hasImage": false,     
         "itemCategory": "momos_v",   
         "itemType": "v"  
  } ] 

请提供 GeoPoint 应如何存在于 json 文件中以存储在 firestore 数据库中的格式。

将批量 JSON 文件上传到 firestore 数据库的代码

var admin = require("firebase-admin");

var serviceAccount = require("./service_key.json");

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: "YOUR_PROJECT_LINK"
});

const firestore = admin.firestore();
const path = require("path");
const fs = require("fs");
const directoryPath = path.join(__dirname, "files");

fs.readdir(directoryPath, function(err, files) {
  if (err) {
    return console.log("Unable to scan directory: " + err);
  }

  files.forEach(function(file) {
    var lastDotIndex = file.lastIndexOf(".");

    var menu = require("./files/" + file);

    menu.forEach(function(obj) {
      firestore
        .collection(file.substring(0, lastDotIndex))
        .doc(obj.itemID)
        .set(obj)
        .then(function(docRef) {
          console.log("Document written");
        })
        .catch(function(error) {
          console.error("Error adding document: ", error);
        });
    });
  });
});

此处链接提供了编写 json 文件的完整代码

https://drive.google.com/file/d/1n_O_iKJWM5tR3HK07Glq6d65XAezEKLf/view

4

1 回答 1

1

让我们考虑一下您的Json地理点字段,如下所示,

{     
     "itemID": "MOMOS_V_101",   
     "itemName": "Sangai Momos",   
     "itemPriceHalf": 70,   
     "itemPriceFull": 130,    
     "hasImage": false,     
     "itemCategory": "momos_v",   
     "itemType": "v",
     "geopoint": {
         "lat": 1,
         "long": 1
     }
}

要将其解析为 Firestore Geopoint,您必须更改迭代器,如下所示

menu.forEach(function(obj) {
      obj.geopoint = new admin.firestore.GeoPoint(obj.geopoint.lat, obj.geopoint.long);

      firestore
        .collection(file.substring(0, lastDotIndex))
        .doc(obj.itemID)
        .set(obj)
        .then(function(docRef) {
          console.log("Document written");
        })
        .catch(function(error) {
          console.error("Error adding document: ", error);
        });
    });

上面的解析器在写入之前将geopoint映射字段修改为 Firestore Geopoint

于 2021-02-03T04:59:57.787 回答