javascript - firestore部分的访问方式——vuefire
问题描述
我正在尝试访问vuefire的 firestore 部分中的方法,但出现此错误:
vue-router.esm.js?8c4f:2257 TypeError: Cannot read property 'messagesWith' of undefined
at eval (Chat.vue?62f3:214)
这是发生错误的行:
parents: this.messagesWith(db.auth().currentUser.uid),
以下是我的完整代码:
export default {
data: () => ({
activeChat: undefined,
parents: [],
messages: [],
messageForm: {
content: "",
me: true,
createdAt: new Date()
}
}),
firestore: {
// eslint-disable-next-line no-undef
messages: db.collection(message_collection_name).orderBy('createdAt','asc'),
parents: this.messagesWith(db.auth().currentUser.uid),
},
computed: {
},
methods:{
dmCollection(toUid){
const idPair = [db.auth().currentUser.uid, toUid].join('_').sort();
return db.firestore().collection(direct_message).doc(idPair).collection(message_collection_name);
},
sendDm(toUid, messageText){
return this.dmCollection(toUid).add({
from: db.auth().currentUser.uid,
message: messageText,
sent: db.firestore.FieldValue.serverTimestamp()
})
},
messagesWith(uid){
return this.dmCollection(uid).orderBy('sent', 'desc').get();
},
},
}
解决方案
为了访问本地选项/方法,定义firestore
为返回对象的函数:
firestore:()=> ({
// eslint-disable-next-line no-undef
messages: db.collection(message_collection_name).orderBy('createdAt','asc'),
parents: this.messagesWith(db.auth().currentUser.uid),
}),
推荐阅读
- android - 当 uid 更改时,为用户订阅 Firebase 中的主题
- python - 重新排序多索引 Pandas 数据框
- reactjs - 访问 React 组件底层 DOM 树
- javascript - 使用 fetch.catch 时在控制台中出现错误
- java - 过滤后的android ListView重复项
- .net-core - 在 dotnet 2.x 版本中使用 include 和 orderby 会引发 Null 异常
- python - Pyspark - 涉及最后一天的“递归”函数
- unity3d - 如果启用了 Internet,Unity 不会加载项目
- java - 隐藏工厂实现
- linux - 如何将物理地址映射到适合 get_user_pages_fast() 的用户空间虚拟地址?