在我的Firestore
数据库中,我将DocumentReferences
存储给用户,以便始终使用最新的用户数据,例如用户名,个人资料图片和身份验证令牌。
我还实现了Cloud Functions
来监听数据库触发器,以便我可以向那些特定用户发送有关与其帖子相关的活动的通知。
这是我遇到的麻烦,因为当我像访问所有其他数据库信息一样访问Node.js
函数时,我不知道如何正确使用存储的参考对象。
以下是我的功能代码:
exports.countNameChanges = functions.firestore
.document('posts/{postId}')
.onUpdate((change, context) => {
// Retrieve the current and previous value
const data = change.after.data();
const previousData = change.before.data();
var registrationToken = '';
var notification = '';
var postTitle = data.statement;
var userRef = data.userRef; //This is my `DocumentReference` object
if (data.interactionCount > previousData.interactionCount && data.postTypeId == 2131165321) notification = 'You recieved a new comment!';
if (data.interactionCount > previousData.interactionCount && data.postTypeId == 2131165335) notification = 'You recieved a new vote!';
if (data.likes > previousData.likes) notification = 'You have a new post like!' ;
if (data.dislikes > previousData.dislikes) notification = 'You have a new post dislike!' ;
admin.firestore()
.doc(userRef) //This is my `DocumentReference` object
.get()
.then(doc => {
registrationToken = doc.data().token;
var payload = {
data: {
title: postTitle,
body: notification
},
token: registrationToken
};
admin.messaging().send(payload)
.then((response) => {
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
})
});
});
});
我的功能日志
我认为DocumentReference
对象将很容易使用
在Cloud Function
内,因为支持将对象直接存储到Firestore
中,但是我无法弄清楚。
答案 0 :(得分:0)
如果userRef
是DocumentReference类型的对象,则直接在其上调用get()
。不要将其传递给doc()
。您只应将字符串类型的对象传递给doc()
。
userRef.get().then(...)