web-dev-qa-db-ja.com

Firebase Cloud Functionからfirestore.Timestampにアクセスする方法

Firestore Dateオブジェクトを新しい Timestamp Objects に変換しています。

ファイアストアをインポートすることにより、フロントエンドで成功しました

import { firestore } from 'firebase';

次に、すべてのDateオブジェクトタイプをfirestore.Timestampに置き換えます。

  startDate: firestore.Timestamp;

問題は、ノードのタイムスタンプにアクセスする方法を見つけることができないようです。

私は管理オブジェクトと関数オブジェクトの両方をログに記録しようとしましたが、タイムスタンプをまったく見つけることができません

import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
...
console.log(functions)
console.log(admin)

これらは私が試したものであり、すべて「タイムスタンプは未定義には存在しません」で返されました

import * as firebase from 'firebase';
...
firebase.firestore.Timestamp.now()

const firebase = require('firebase')   
...
firebase.firestore.Timestamp.now()

import * as admin from 'firebase-admin';
...
admin.firestore.Timestamp.now()

ここに私のpackage.jsonの依存関係があります

"dependencies": {
    "@sendgrid/mail": "^6.2.1",
    "@types/node-fetch": "^1.6.8",
    "chai": "^4.1.2",
    "chai-as-promised": "^7.1.1",
    "cors": "^2.8.4",
    "encodeurl": "^1.0.2",
    "fetch": "^1.1.0",
    "firebase": "^4.13.0",
    "firebase-admin": "^5.12.0",
    "firebase-functions": "^1.0.1",
    "generator-karma": "^2.0.0",
    "google-distance": "^1.0.1",
    "mailgun-js": "^0.13.1",
    "moment": "^2.22.1",
    "node-fetch": "^2.1.2",
    "request": "^2.85.0",
    "sinon": "^4.0.1",
    "TypeScript": "^2.8.3"
},
"private": true,
"devDependencies": {
    "@angular/cli": "^1.7.4",
    "@types/cors": "^2.8.3",
    "@types/jasmine": "^2.6.6",
    "ts-loader": "^3.5.0",
    "webpack-node-externals": "^1.7.2"
}
11
Matthew Mullin

Firebase FunctionsのV2.0のリリースでは、Firebase Admin SDKパッケージにTimestampサポートが追加されたようです。

公式ドキュメント here をご覧ください。

import { firestore } from 'firebase-admin';
...
const now = firestore.Timestamp.now()
20
Matthew Mullin

現時点では、ノードの@google-cloud/firestore npmモジュールの最新バージョンではTimestampを使用できません。 API docs に含まれていないこともわかります。おそらく、それは@google-cloud/firestoreの次のリリースで追加される予定です。

5
Doug Stevenson

私は同じ問題に遭遇したので、Firebase Firestoreタイムスタンプの基本的なノードモジュールをここに作成しました https://www.npmjs.com/package/firebase-firestore-timestamp

https://www.gstatic.com/firebasejs/4.13.0/firebase-firestore.js からの基本的なコードポート

3
Hamiora

クラウド関数内で必要なため、snapパラメーターを介してタイムスタンプを運ぶトリガー(onCreate、onUpdate ...など)を操作しています。以下のように使用できます。 (私と一緒に働いた)

exports.newUserCreated = functions.firestore.document('users/{userId}').onCreate(async (snap, context) => {
firestore.collection(`users/${userID}/lists`).add({
    'created_time': snap.updateTime,
    'name':'new list name',
}).then(documentReference => {
    console.log("list created");
    return null;
  }).catch(error => {
    console.error('Error creating list', error);
    process.exit(1);
});

});

1
Bishoy Hanna