【发布时间】:2019-02-13 06:28:00
【问题描述】:
我正在使用 vue.js 和 firebase 构建一个基本的 CRUD 应用程序。我正在尝试构建收藏夹功能,但在存储数据时遇到了持久性问题。
当用户单击添加到收藏夹按钮时,我正在尝试将文档 ID 添加到“用户配置文件”文档中的数组中。代码如下:
export function addNewUserAction (type, key, userID){
console.log(userID);
console.log(key);
firebase.firestore().collection('userActions').add({
type: type,
listing: key,
user: userID,
time: Date.now()
})
if(type === 'favorite'){
var sendfav = db.collection('userProfiles').doc(userID).update({
favs: firebase.firestore.FieldValue.arrayUnion(key)
});
}else if(type === 'xout'){
var sendxout = db.collection('userProfiles').doc(userID).update({
xouts: firebase.firestore.FieldValue.arrayUnion(key)
});
}else{
console.error(type + " is not a user action");
}
}
我在控制台中收到以下错误:
Uncaught TypeError: Cannot read property 'arrayUnion' of undefined
at addNewUserAction
我已经导入了 firebase 和 db ref,并且通过每个引用运行了一个虚假的 .set() 以确认它们指向正确的位置。我也已经在“userProfile”文档中创建了数组。
firebase 安装是全新的,就像上周一样,所以我的构建中应该有这个功能。
似乎 arrayUnion 只是不工作。有任何想法吗?其他 Firestore 功能正在运行,所以我不确定。我是否突然错过了什么?谢谢
【问题讨论】:
-
嘿Tjb。
firebase.firestore.FieldValue似乎是undefined。你能准确地展示你是如何在你的代码中包含 Firebase 的吗?我只是想确保您使用的是正确的版本。 -
谢谢弗兰克。我正在使用 initializeApp 函数在 Vue 中的一个组件中初始化 firebase,并提供我的道歉键、项目名称等,然后我将 firebase 导入到使用它的组件中。我承认我对如何初始化有点困惑,因为我已经在 Vue 应用程序中安装了 firebase。我还应该在 index.html 文件中包含 CDN 脚本吗?
-
另外,刚刚检查了我的 package.json 文件,如果有帮助,它会显示 firebase/firestore version=0.7.1。
-
请更新您的问题以包含重现问题所需的最小 package.json 和/或 HTML。但 0.7.1 对我来说听起来像是一个不寻常的版本。据我所知,最新的版本是 5.x 或 6.x。
-
嗨弗兰克,很抱歉延迟回复。这是我的 package.json 用于 firebase 的内容:
"dependencies": { "firebase": "^5.4.1", "vue": "^2.5.11", "vue-router": "^3.0.1", "vuefire": "^1.4.5" },
标签: javascript firebase vue.js google-cloud-firestore