【问题标题】:how to import and export date time format data from json to nosql(firestore)如何将日期时间格式数据从 json 导入和导出到 nosql(firestore)
【发布时间】:2020-03-19 08:16:00
【问题描述】:

输入:

创建时间:2019 年 4 月 29 日星期一 15:07:59 GMT+05:30

更新时间:2019 年 4 月 29 日星期一 15:07:59 GMT+05:30

我尝试使用 (firestore-export-import)npm 从 firestore 导出数据(Json 格式),但我得到了输出

        "Updated_At": {
            "_seconds": 1556530679,
            "_nanoseconds": 0
        },
        "Created_At": {
            "_seconds": 1556530679,
            "_nanoseconds": 0
        }

来自

创建时间:2019 年 4 月 29 日星期一 15:07:59 GMT+05:30

更新时间:2019 年 4 月 29 日星期一 15:07:59 GMT+05:30

有没有其他方法可以获取时间戳格式(2019 年 4 月 29 日星期一 15:07:59 GMT+05:30) 这是我的导入导出代码..

export.js

var express = require('express');
var router = express.Router();
var fs = require('fs');
var firestoreService = require('firestore-export-import');
var databaseURL = 'https://sample.firebaseio.com';
var serviceAccount = require('../sample.json'); // Initiate Firebase App
firestoreService.initializeApp(serviceAccount, databaseURL);
router.get('/', async (req, res, next) => {
// Start exporting your data
firestoreService
    .backup('sample') //collection ,sub collection
    .then(data => {
fs.writeFile("sample.json", JSON.stringify(data), function (err) {
if (err) {
console.log("error:", err.message);
res.json({
returncode: 201,
message: err.message
          })
        } else {
console.log("Data Exported Sucessfully");
res.json({
returncode: 200,
message: "Data Exported Sucessfully"
          })
        }
      });
    })
});
module.exports = router;

import.js

var express = require("express");
var router = express.Router();
const firestoreService = require("firestore-export-import");
var databaseURL = "https://sample.firebaseio.com";
var serviceAccount = require("../sample.json"); // Initiate Firebase App
firestoreService.initializeApp(serviceAccount, databaseURL);
router.get("/", async (req, res, next) => {
firestoreService
    .restore("./sample.json") //json file
    .then(async function () {
console.log("Data Imported Successfully");
return res.json({
returncode: 200,
message: "Data Imported Successfully"
      });
    })
    .catch(function (err) {
return res.json({
returncode: 201,
message: err.message
      });
    });
});
module.exports = router;

【问题讨论】:

    标签: javascript node.js json google-cloud-firestore nosql


    【解决方案1】:

    当您从 Firestore 导出日期时,您将始终收到 firebase. firestore. Timestamp

    它有两个属性纳秒。因此,您收到与您发布的输出类似的输出是正常的:

    "Updated_At": {
        "_seconds": 1556530679,
        "_nanoseconds": 0
    },
    "Created_At": {
        "_seconds": 1556530679,
        "_nanoseconds": 0
    }
    

    将其转换为 javascript 日期:

    1- 使用 toDate method 以毫秒为单位返回 Date 对象。

    2- 之后使用普通的 javascript 方法将日期(以毫秒为单位)转换为实际日期,如:

    const date = new Date(dateInMilliseconds);
    

    你会得到如下结果:

    2020 年 3 月 20 日星期五 13:33:02 GMT+0100(中欧标准时间)

    【讨论】:

    • 我无法理解请用另一个例子解释@Methkal Khalawi
    • 嘿@VijayRahul,我更新了我的答案。如果它解决了您的问题,请接受它。
    【解决方案2】:
    const functions = require('firebase-functions');
    const admin = require("firebase-admin");
    admin.initializeApp(functions.config().firebase);
    exports.Timestampcreation = functions.region('Your-Region')
    .firestore.document('CollectionName/{DocumentID}') //InitiateCollectionName and DocumentIdName
    .onCreate((snap, context) => {
    const DocId = context.params.Id;
    const data = snap.data();
    console.log(snap.data());
    console.log(data.Created_At); //data.fieldname1
    console.log(data.Updated_At); //data.fieldname2
    const createddate = new admin.firestore.Timestamp(data.Created_At._seconds, data.Created_At._nanoseconds) //As Timestamp is under firebase.firestore namespace
    const updateddate = new admin.firestore.Timestamp(data.Updated_At._seconds, data.Updated_At._nanoseconds)
    console.log(createddate);
    console.log(updateddate);
    const TimestampRef = admin.firestore().collection(CollectionName).doc(DocId);
    return TimestampRef.update({
    Created_At: createddate,
    Updated_At: updateddate
    });
    });
    

    【讨论】:

    • 导入前,此云功能会根据您的项目进行修改和部署
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-05
    • 1970-01-01
    • 2021-06-02
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多