【发布时间】:2019-02-03 08:02:50
【问题描述】:
我正在尝试从 Firestore 中删除一个文档,我没有收到错误消息,但该文档仍在数据库中:简单地说,它一直在它所属的集合中。
云函数是:
exports.countdowns_crud = functions.https.onRequest((request, response) => {
var req = request;
var res = response;
if (request.method === 'DELETE') {
const countdownId = request.path.split('/')[1];
const deleteOperation = db.DeleteCountdown(countdownId);
if (!deleteOperation) {
console.log('Delete operation result: ', deleteOperation);
cors(req, res, () => {
res.status(204).send("DELETED");
});
}
else {
console.error(addOperation);
cors(req, res, () => {
res.status(500).send("INTERNAL SERVER ERROR");
});
};
return;
}
cors(req, res, () => {
res.status(405).send("NOT ALLOWED");
return;
});
})
DeleteCountdown 函数在另一个模块中:
module.exports = {
DeleteCountdown: (countdownId) => {
const countdownsCollection = app.firestore.collection('countdowns');
countdownsCollection.doc(countdownId).delete()
.then((res) => {
console.log('Result: ', res);
return null;
})
.catch((e) => {
console.error(`unable to delete the countdown ${countdowmnId}: ${e}`);
return e;
});
}
}
这是谷歌云功能中的逻辑,我的反应应用程序在删除时正确调用了它。传递的 id 是正确的,没有返回错误,但是 doc 继续存在于集合中。
【问题讨论】:
-
您的规则是否设置为允许删除? firebase.google.com/docs/firestore/security/…
-
好吧,我没有。但仍然具有以下权限: service cloud.firestore { match /databases/{database}/documents { match /{document=**} { allow read, write, update, delete; } } } 它既没有给我错误也没有删除文件。
-
如果您在 Cloud Functions 中运行此功能,请编辑问题以显示无法按您期望的方式工作的整个最小功能。
-
对不起,我做了一个更好的调试并修复了它。给定更改后 id 错误。拆分功能并不理想,这只是一个原型,我很快就会添加 express.js,所以我基本上会使用辅助工具进行 url 操作。谢谢。
-
如果您不再需要这个问题,请删除它。
标签: reactjs google-cloud-firestore google-cloud-functions