2 回答
TA贡献1794条经验 获得超8个赞
我通过做我上面所做的一切来解决这个问题,并为云功能使用以下代码
const functions = require('firebase-functions');
const admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
exports.onFollowCreate = functions.firestore
.document("following/{userID}/myFollowing/{id}")
.onCreate((snap, context) => {
const newValue = snap.data()
const db = admin.firestore();
db.collection("users").doc(context.params.userID).update({following: admin.firestore.FieldValue.increment(1)}).catch((er)=>{console.log(er)})
db.collection('followers').doc(newValue.uid).collection("myFollowers").doc(context.params.userID).set({uid: context.params.userID, timeStamp: new Date()}).catch(er=>console.log(er))
});
exports.onFollowDelete = functions.firestore
.document("following/{userID}/myFollowing/{id}")
.onDelete((snap, context)=>{
const deletedValue = snap.data()
const db = admin.firestore();
db.collection("users").doc(context.params.userID).update({following: admin.firestore.FieldValue.increment(-1)}).catch(er=>console.log(er))
db.collection('followers').doc(deletedValue.uid).collection("myFollowers").doc(context.params.userID).delete().catch(er=>console.log(er))
})
exports.onFollowersCreate = functions.firestore
.document("followers/{userID}/myFollowers/{id}")
.onCreate((snap, context)=>{
const db = admin.firestore();
db.collection("users").doc(context.params.userID).update({followers: admin.firestore.FieldValue.increment(1)}).catch(er=>console.log(er))
})
exports.onFollowersDelete = functions.firestore
.document("followers/{userID}/myFollowers/{id}")
.onDelete((snap, context)=>{
const db = admin.firestore();
db.collection("users").doc(context.params.userID).update({followers: admin.firestore.FieldValue.increment(-1)}).catch(er=>console.log(er))
})
TA贡献1848条经验 获得超10个赞
我以前也想过这个,而且非常相似。我认为这可能是构建数据库的最佳方式。这是关于一些数据库设计的 Medium 上的文章。
现在对于函数,您需要一个在编写关于 A 和 B 的文档时触发的函数。请参阅文档以获取onCreate
函数。您的云功能将存在于 node.js 10 无服务器环境中,并且不会连接到您的前端应用程序。这是我在已部署站点上的一些功能的真实示例。我建议不要将数据添加到前端的 Firestore。而是创建一个onCall
HTTP 函数,在此处查看有关这些函数的更多信息。
很抱歉没有给你实际的代码,但我发现自己做会帮助你学习。祝你好运 :)
添加回答
举报