Node.js admin.firestore.FieldValue.serverTimestamp()无法使用Firebase实时数据库
我正在尝试用Firebase实时数据库编写一个消息传递应用程序,它在Cloud Firestore上已经有了一些功能。我在一个文件Node.js admin.firestore.FieldValue.serverTimestamp()无法使用Firebase实时数据库,node.js,firebase-realtime-database,timestamp,Node.js,Firebase Realtime Database,Timestamp,我正在尝试用Firebase实时数据库编写一个消息传递应用程序,它在Cloud Firestore上已经有了一些功能。我在一个文件messages.js const admin = require('firebase-admin'); const config = require('./config'); admin.initializeApp(config);//config information const realtime_db = admin.database(); const
messages.js
const admin = require('firebase-admin');
const config = require('./config');
admin.initializeApp(config);//config information
const realtime_db = admin.database();
const { uuid } = require("uuidv4");
const {
generate_message_structure,
} = require("../util/schema");
exports.async_create_message = async function(data, context) {
try {
const message = generate_message_structure(data);//creates a Javascript Object
const message_log_id = "Some_id";//derived from a function
//Some interactions with Cloud Firestore
const generated_token = uuid();
await realtime_db.ref(`messages/${message_log_id}/${generated_token}`).set(message);
console.log(message);//output shown later
console.log("Message created");
console.log(`message_id of ${generated_token}`)
} catch (error) {
console.log(error);
}
}
我在同一个文件的底部编写了测试,并运行node messages.js
在数据库中创建了一条记录
const mockMessage = {};//capitalised constants are strings
mockMessage[MESSAGE_BODY] = "Test body";
mockMessage[MESSAGE_SENDER_ID] = "Alice_id";
mockMessage[MESSAGE_RECEIVER_ID] = "Bob_id";
mockMessage[MESSAGE_IMAGE] = {
uid: "random_id",
url: "google.com"
};
exports.async_create_message(mockMessage);
前面注释的myconsole.log
的输出具有以下结构
{
body: 'Test body',
sender_id: 'Alice_id',
receiver_id: 'Bob_id',
image: { uid: 'random_id', url: 'google.com' },
last_updated: ServerTimestampTransform {},
created_at: ServerTimestampTransform {},
seen: false
}
但是当我检查数据库中的记录时,除了上次更新的
和创建的时间戳字段之外,所有字段都存在。我可以知道这段代码有什么问题吗?在与实时数据库交互时,您正在尝试为Firestore使用一个常量。虽然这两个数据库都是Firebase的一部分,但它们是完全独立的,不能将API用于其中一个数据库
要将服务器端时间戳写入实时数据库,请使用:
ref.set(firebase.database.ServerValue.TIMESTAMP)
另请参阅上的Firebase文档