str*_*ies 5 node.js firebase google-cloud-functions google-cloud-firestore firebase-cli
我有一个 Firebase 函数,当用户的帐户被删除时,它会删除 Firestore 数据库中用户的集合。
const firebase_tools = require("firebase-tools");
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
exports.deleteUser = functions.auth.user().onDelete((user) => {
return firebase_tools.firestore
.delete(`users/${user.uid}`, {
project: process.env.GCLOUD_PROJECT,
token: functions.config().fb.token,
recursive: true,
yes: true
}).catch((error) => {
console.log(error);
throw new functions.https.HttpsError(
"unknown",
"Error deleting user's data"
);
});
});
Run Code Online (Sandbox Code Playgroud)
每当删除用户并执行该函数时,我都会在函数日志中收到以下错误。
FirebaseError: Missing required options (force) while running in non-interactive mode
at prompt (/workspace/node_modules/firebase-tools/lib/prompt.js:16:15)
at promptOnce (/workspace/node_modules/firebase-tools/lib/prompt.js:29:11)
at Command.actionFn (/workspace/node_modules/firebase-tools/lib/commands/firestore-delete.js:69:51)
at Object.delete (/workspace/node_modules/firebase-tools/lib/command.js:190:25)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
Run Code Online (Sandbox Code Playgroud)
我能找到的与此相关的唯一信息是有关将功能部署/删除到 Firebase 的信息,并且我找不到太多有关 firebase-tools 的文档。
小智 10
将 force: true 添加到传递给 firebase-tools 的 JSON。为我工作版本 10.1.4
{
project: process.env.GCLOUD_PROJECT,
token: functions.config().fb.token,
recursive: true,
yes: true,
force: true // add this
}
Run Code Online (Sandbox Code Playgroud)
我已经重现了您遇到的错误。
此错误发生在最新的"firebase-tools": "^10.1.3".
基于使用可调用云函数删除数据,该文档包含仍然使用的示例代码"firebase-tools": "9.18.0"。您可以firebase-tools通过修改package.json. 例如下面:
"dependencies": {
"firebase": "^9.6.5",
"firebase-admin": "^9.12.0",
"firebase-functions": "^3.16.0",
"firebase-tools": "9.18.0"
}
Run Code Online (Sandbox Code Playgroud)
您还可以使用@Renaud Tarnec 通过使用Admin SDK回答的内容。例如下面:
const functions = require("firebase-functions");
const admin = require("firebase-admin");
admin.initializeApp();
db = admin.firestore();
exports.deleteUser = functions.auth.user().onDelete((user) => {
db.collection("users").doc(user.uid).delete()
.then(function(user) {
console.log("Successfully Deleted User:", user.uid)
})
.catch((error) => {
console.log(error);
throw new functions.https.HttpsError(
"unknown",
"Error deleting user's data"
);
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1199 次 |
| 最近记录: |