Node.js nodejs Firestore突然中断:日期对象
我运行了一个简单的节点脚本来更新Firestore数据库中的数据。我几个小时前用过,效果很好。吃过晚饭回来了,现在我运行它时出错了:Node.js nodejs Firestore突然中断:日期对象,node.js,firebase,google-cloud-firestore,Node.js,Firebase,Google Cloud Firestore,我运行了一个简单的节点脚本来更新Firestore数据库中的数据。我几个小时前用过,效果很好。吃过晚饭回来了,现在我运行它时出错了: node ./json-to-firestore.js Firestore中存储的日期对象的行为将发生更改 你的应用程序可能会崩溃。隐藏此警告并确保您的应用程序 不中断,您需要在之前将以下代码添加到您的应用程序中 调用任何其他云Firestore方法: const firestore=新的firestore();常量设置={/*您的 设置…*/timestam
node ./json-to-firestore.js
Firestore中存储的日期对象的行为将发生更改
你的应用程序可能会崩溃。隐藏此警告并确保您的应用程序
不中断,您需要在之前将以下代码添加到您的应用程序中
调用任何其他云Firestore方法:
const firestore=新的firestore();常量设置={/*您的
设置…*/timestampsInSnapshots:true}firestore.settings(设置) 错误中提供的示例不适用于我的案例。我已经在这个问题上寻求帮助,但所有的帖子似乎都是针对特定角度的。这就是我想要做的:
var admin = require("firebase-admin");
var serviceAccount = require("./service-key.json");
const data = require("./occ-firestore.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "xxxxxxxxxxx"
});
data && Object.keys(data).forEach(key => {
const nestedContent = data[key];
if (typeof nestedContent === "object") {
Object.keys(nestedContent).forEach(docTitle => {
admin.firestore()
.collection(key)
.doc(docTitle)
.set(nestedContent[docTitle])
.then((res) => {
console.log("Document successfully written!");
})
.catch((error) => {
console.error("Error writing document: ", error);
});
});
}
});
我通过运行以下命令来执行此脚本:
node ./json-to-firestore.js
我正在运行nodejs8.11.3
我查过了,没有提到这种新的行为
有人能给我提个建议吗?提前谢谢 我通过将firebase版本降级到该版本来解决此问题
{
firebase-admin: "5.12.0",
firebase-functions: "1.0.1"
}
我通过将firebase版本降级到该版本来解决此问题
{
firebase-admin: "5.12.0",
firebase-functions: "1.0.1"
}
这可以通过以下方式进行固定:
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
db.settings({ timestampsInSnapshots: true });
这可以通过以下方式进行固定:
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
db.settings({ timestampsInSnapshots: true });
Firebase正在更改日期对象在Firestore中的存储方式。当您试图将日期对象保存到Firestore时(在发布此答案之日),下面是他们发出的实际警告: Firestore中存储的日期对象的行为将发生更改 你的应用程序可能会崩溃。 要隐藏此警告并确保应用程序不会中断,您需要添加 在调用任何其他云Firestore方法之前,请将以下代码添加到您的应用程序: 更重要的是,如何处理这些更改,使您的代码不会中断: 通过此更改,存储在CloudFireStore中的时间戳将作为 Firebase时间戳对象,而不是系统日期对象。所以你也会 需要更新预期日期的代码,而不是预期时间戳。例如:
Firebase正在更改日期对象在Firestore中的存储方式。当您试图将日期对象保存到Firestore时(在发布此答案之日),下面是他们发出的实际警告: Firestore中存储的日期对象的行为将发生更改 你的应用程序可能会崩溃。 要隐藏此警告并确保应用程序不会中断,您需要添加 在调用任何其他云Firestore方法之前,请将以下代码添加到您的应用程序: 更重要的是,如何处理这些更改,使您的代码不会中断: 通过此更改,存储在CloudFireStore中的时间戳将作为 Firebase时间戳对象,而不是系统日期对象。所以你也会 需要更新预期日期的代码,而不是预期时间戳。例如:
这种变化已经存在了相当长的一段时间。也许您最近更新了客户端库?不管怎样,这个建议出现在错误消息中-非常清楚。我想这个错误是从firebase admin 5.13.0开始抛出的,我也收到了@谢谢你的评论。我同意这条信息很清楚,但我在翻译他们的建议以便在我的代码中使用时遇到了困难。这就是问题所在。。。它出错了,没有执行。我的代码与日期无关,所以我不清楚为什么会失败。如果这只是一个无伤大雅的警告,我不会担心。这种变化已经存在了相当长的一段时间。也许您最近更新了客户端库?不管怎样,这个建议出现在错误消息中-非常清楚。我想这个错误是从firebase admin 5.13.0开始抛出的,我也收到了@谢谢你的评论。我同意这条信息很清楚,但我在翻译他们的建议以便在我的代码中使用时遇到了困难。这就是问题所在。。。它出错了,没有执行。我的代码与日期无关,所以我不清楚为什么会失败。如果这只是一个无害的警告,我就不会担心了。事实上,这是有效的。。。但这似乎更像是一种变通办法,而不是解决方案。我希望最终能够更新到当前版本。但现在,它正在发挥作用。非常感谢。事实上,这起作用了。。。但这似乎更像是一种变通办法,而不是解决方案。我希望最终能够更新到当前版本。但现在,它正在发挥作用。非常感谢。当我使用“admin.initializeApp({credential:admin.credential.cert(serviceAccount)})”时,它对我起了作用而不是“admin.initializeApp(functions.config().firebase);”根据Firebase文档(),这取决于您是从哪个位置连接到Firebase的。”admin.initializeApp({credential:admin.credential.cert(serviceAccount)});'如果从您自己的服务器进行连接,则此选项是正确的,因为您正在运行Firebase功能,因此无需执行此操作。您可以在我上面的回答中使用这个例子。当我使用“admin.initializeApp({credential:admin.credential.cert(servicecomport)})”时,它对我很有效而不是“admin.initializeApp(functions.config().firebase);”根据Firebase文档(),这取决于您是从哪个位置连接到Firebase的。”admin.initializeApp({credential:admin.credential.cert(serviceAccount)});'如果从您自己的服务器进行连接,则此选项是正确的,因为您正在运行Firebase功能,因此无需执行此操作。你可以用我上面回答的例子。