Я пишу асинхронную c функцию async_unlike_post
, используемую для моей HTTP-функции firebase unlike_post
формы в index.js
. Реализация async_unlike_post
сохраняется в другом файле posts.js
index. js
exports.unlike_post = functions
.https
.onCall(async_unlike_post);
сообщений. js
const { admin, db } = require("../util/admin");
//admin.initializeApp(config);
//const db = admin.firestore();
const { uuid } = require("uuidv4");
const {
success_response,
error_response
} = require("../util/validators");
exports.async_unlike_post = async function(req, res) {
try {
const like_snapshot = await db
.collection('likes')
.where("liker_id", '==', req.liker_id)
.where('entity_id', '==', req.entity_id)
.limit(1).get();
if (!like_snapshot.exists) {
console.log("Case 1");
return error_response("Post has not been liked by user");
}
const post_document = db.doc(`/posts/${req.entity_id}`);
const post_snapshot = await post_document.get();
if (!post_snapshot.exists) {
console.log("Case 2");
return error_response("Post not found");
}
console.log("Should delete");
return db.collection("likes").doc(like_snapshot.id).delete();
} catch (error) {
return error_response(error);
}
}
mockLike = {
liker_id: "string1",
entity_id: "string2"
}
exports.async_unlike_post(mockLike);
После запуска node posts.js
я ожидаю, что документ в моей базе данных Firestore будет удален. Однако на моей консоли говорится, что это относится к случаю 1. В моей базе данных firestore в коллекции likes
определенно есть документ со следующими атрибутами.
created_at: Some_timestamp,
entity_id: "string2",
liker_id: "string1",
type: "post"
Может ли кто-нибудь просветить меня, почему выполнение моего кода переходит в Случай 1?