首页 > 解决方案 > 如何将日期时间格式数据从 json 导入和导出到 nosql(firestore)

问题描述

输入:

创建时间: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)这是我的导入导出代码..

出口.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;

导入.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;

标签: javascriptnode.jsjsongoogle-cloud-firestorenosql

解决方案


当您从 firestore 导出日期时,您将始终收到firebase。火库。时间戳

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

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

将其转换为 javascript 日期:

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

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

const date = new Date(dateInMilliseconds);

你会得到如下结果:

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


推荐阅读