как импортировать и экспортировать данные формата даты и времени от json до sql (пожарный) - PullRequest
0 голосов
/ 19 марта 2020

Ввод:

Created_At: понедельник, 29 апреля 2019 г. 15:07:59 GMT + 05: 30

Обновлено_At: понедельник, 29 апреля 2019 г. 15:07:59 GMT + 05: 30

I Пробовал экспортировать данные (Json формат) из хранилища, используя (firestore-export-import) npm, но я получаю вывод

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

От

Создано_: Понедельник, 29 апреля 2019 г. 15:07:59 GMT + 05: 30

Обновлено: Понедельник, 29 апреля 2019 г. 15:07:59 GMT + 05: 30

есть любой альтернативный способ получения формата отметки времени (понедельник, 29 апреля 2019 г. 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;

импорт. 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;

Ответы [ 2 ]

0 голосов
/ 19 апреля 2020
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
});
});
0 голосов
/ 19 марта 2020

когда вы экспортируете свою дату из пожарного магазина, вы всегда получите базу огня. Firestore. Отметка времени .

, которая имеет два свойства секунд и наносекунд . поэтому нормально, что вы получаете вывод, подобный тому, который вы опубликовали:

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

для преобразования его в javascript Дата:

1 - используйте метод toDate , которые возвращают объект Date в миллисекундах.

2- после этого, используя обычные javascript методы, конвертируют дату (в миллисекундах) в фактическую дату, например:

const date = new Date(dateInMilliseconds);

, вы получите результат, подобный:

Пт 20 марта 2020 13:33:02 GMT + 0100 (центральноевропейское стандартное время)

...