javascript - 如何将日期时间格式数据从 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;
解决方案
当您从 firestore 导出日期时,您将始终收到firebase。火库。时间戳。
它有两个属性seconds和nanoseconds。因此,您收到与您发布的输出类似的输出是正常的:
"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(中欧标准时间)
推荐阅读
- android - Android MVVM,你能用另一个 LiveData 对象观察 ViewModel 中的 LiveData 吗?
- django - 在graphene-django中按主键查找(带中继)
- datastax - DSE 模式创建:节点工作负载不兼容
- python - sqlalchemy:我无法从表中删除记录 - 违反非空约束
- google-apps-script - 从工作表更新表单的问题
- azure - 是否可以通过 KeyCloak 为一组 webapp 配置 2 个不同的 SSO (AD)?
- kubernetes - Prometheus:公开 kubernetes pod 特定指标
- wordpress - 安装 Gon WordPress 主题时出错
- python-imaging-library - 我如何使用 Python Pillow 将图片粘贴到另一个图层(所以没有 PNG 网格)
- reactjs - React.lazy() 与 Typescript