问题标签 [vuexfire]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
108 浏览

vue.js - vuexfire 反应性有问题吗?

我以为 vue 开发工具中存在错误,但现在我想知道 vuexfire 是否存在反应性错误?显然,突变正在触发......

突变激发

但是,在 vue 开发工具中,状态始终为 0 长度。

状态长度 0

但是,console.log 显示它确实从 firebase 拉下了我的两条记录

Console.log 显示联赛

我的用户详细信息(例如名称)也存在问题,一旦数据被拉入 vuex,它不会触发反应链并更新 getter(对象在 vue 开发工具中也是空的,而数据显示在控制台.log())。任何帮助将不胜感激!谢谢!

0 投票
2 回答
389 浏览

firebase - 如何在 Vuexfire 中使用 Moment.js

我正在构建一个在 store.js 文件中使用 Vuexfire 的 Vue.js 应用程序。我的应用程序使用户能够将用户输入的带有时间戳的帖子推送到 Firestore。我正在配置我的 Vuexfire 操作处理程序,以提交按时间戳顺序排列的 firebase 有效负载的突变,如下所示:

此设置按时间戳正确排列帖子。但是,我希望使用 Moment.js 格式化时间戳,但不确定如何将 Moment 正确应用于动作处理程序。我尝试将时间戳包装在 Moment 中,如下所示:

...但这没有返回任何输出,只有控制台中的警告。我还尝试设置输入组件,以便推送到 Firebase 的时间戳已经使用 Moment 进行格式化,但帖子没有以正确的顺序返回。知道如何在 Vuexfire 操作处理程序中正确设置 Moment.js 以格式化时间戳吗?谢谢!

0 投票
1 回答
285 浏览

javascript - 使用 Vuex 操作 Firebase 集合中的文档 [Vuex/Vuexfire]

我有一个简单的问题,但我找不到答案。我正在使用 Vuexfire 从 Vuex 中的 Firebase 导入数据。

它工作得很好,但我想操作集合“ricettarioFirebase”的每个文档。使用 vue + firebase 很容易,使用 .get() 和 .then()

我找不到解决办法!我认为使用 GETTERS 是最好的方法,但我是 Vuex 和 Vuexfire 的新手,所以我不知道该怎么做。

特别是,我想转换它(经典的 firebase 命令):

在 Vuexfire 中。因此,将“ricettario[]”中的每个对象更改为“ricetta”,我想编辑“ricetta.diffClass”和“ricetta.data”

0 投票
2 回答
1317 浏览

firebase - Vuexfire 将 Firestore 集合绑定到 Object 而不是 List

我的 Firestore 数据库中有以下集合:

方案

我可以使用以下内容绑定到我的 vuex 商店:

然而,这将它们绑定assets为一个列表,即

在哪里,我希望它被绑定为:

我怎样才能做到这一点?

0 投票
1 回答
114 浏览

vue.js - vuex + vuexfire - 添加数据时存储对象不会更新

在以下代码中,在我更新字段集合后,它不会更新“this.fields”(通过 vuexfire 规则绑定到 store.js 中的集合)-仅当我刷新页面时。请帮忙。谢谢

0 投票
1 回答
99 浏览

firebase - Vuex有效负载中的未定义数组使用firestore where'in'查询

我正在尝试进行这样的 'in' 查询: db.collection('units').where('SuperID', 'in', payload)

SuperID:是一个数字

有效载荷:是与 SuperID 匹配的数字数组

我这样做是为了可以根据这样的文档对用户进行分组

在此处输入图像描述

Vuex 商店

方法

它控制台记录有效负载,然后说它未定义

每当我尝试调用它时,它都会记录我需要的数组,然后说它未定义并引发 Firebase 错误。

0 投票
1 回答
868 浏览

javascript - 使用 vuex 并将新数据附加到状态时对 firestore 数据进行分页

我实现了以下内容来显示分页查询(这是 Tony O'Hagan 在这篇文章中提出的:如何从 VueFire 查询中获取最后一个文档):

当用户滚动到页面末尾时,我调用 bindMoreUsers 将 state.users 更新为下一组 8 个文档。我需要能够附加到 state.users 而不是覆盖原始的 8 个文档集。我怎样才能做到这一点?

0 投票
1 回答
32 浏览

firebase - 使用 firebase 在 Vuejs 应用程序上执行日常计算

我有一个带有 firebase auth、firestore 和 vuex 的 Vuejs 应用程序。我对其中一个组件进行了每日计算。即使用户有一段时间没有登录,保持计算值有效的最佳方法是什么?谢谢!

0 投票
1 回答
647 浏览

vue.js - 我应该如何避免在平面 vuex 结构中重复数据和 API 调用?

我目前正在构建一个 vue/vuex/firestore/vuexFire 项目,我遇到了以下问题。

假设我想显示一个消息列表,其中每条消息都与一个用户相关联。一个用户可以提交多条消息,这些消息都将在他们的名下。在 vuex 中,它的平面表示可能如下所示:

用户状态模块

消息状态模块

在服务器上(我使用的是 Firebase 的 Firestore),结构基本相同。因此,我获取所有消息,然后像这样关注每个 authorId:

我遇到的问题是,如果有一个用户创建了多条消息,它们将一遍又一遍地添加到 users 数组中。此外,fetchUser()一遍又一遍地不必要地调用。到目前为止,我解决这个问题的尝试失败或不优雅:

  • users我试图在调用之前检查用户是否已经存在于数组中fetchUser()。但是,这不起作用,因为fetchUser是异步操作。它可能正在获取过程中,因此检查用户是否已经在数组中通常测试为假。

  • 我试图检查用户是否已经存在于addUser突变中。虽然这确实可以防止重复,但它并不能防止不必要的用户获取。此外,addUser突变必须在每次调用时检查用户不是重复的,这对于较大的数组可能会很昂贵。

  • 一种有效的方法是在状态中创建一个fetchJobs对象users。当fetchUser()被调用时,我将用户的 id 添加到对象中。然后,在获取其他用户之前,我会检查此对象以确保我没有获取重复项。与直接检查状态相反,这样做的原因是我在操作开始时提交了 fetchJob,因此它不是异步的。这样,其他组件和状态模块就可以访问它。但是,如果用户对象需要随时更新,这将不起作用,因为它仍将保留在 fetchJobs 对象中。

我还应该提到我正在使用一个名为 VuexFire 的小型帮助程序库,它管理 Firestore 的绑定collectionReference.onSnapshot()。这引入了另一个限制,即在添加、更新或删除文档时我无法直接运行操作。这是因为 VuexFire 会自动处理所有这些更改,并且不支持挂钩这些事件。相反,我必须遍历所有现有消息并调用fetchUser(). 我没有在上面的代码示例中包含它,因为它与snapshot.forEach(). 如果需要,我也可以放弃这个库。

那么,解决这个问题的最佳方法是什么?

0 投票
0 回答
102 浏览

firebase - 用户首次登录时集合的实时绑定不起作用(Vue.js、Vuexfire、Firebase)

我正在开发一个通知系统,我遇到了 Vuexfire 来实时绑定通知集合和表格。到目前为止一切顺利,问题是:我可以同时向用户和组发送通知,那么如果选择了用户和组,就会有重复...如果他们删除重复通知,如何消除'同时发送给用户和组?但是,我当前的解决方案在 98% 的情况下都有效,在用户登录组通知后不会立即显示,除非我刷新或在系统中执行某些操作并返回。

我在每个存储用户或组 ID 的文档中都有一个 userIds 和 groupIds 数组。然后我做了两个绑定,如下图在我的vuex store主文件中。

我收到通知并将它们存储在 newNotificationsUser 和 newNotificationsGroup 中。

在我的组件中,我有这样的东西:

}

我连接两个数组,然后删除重复项并将结果显示在 uniqueNotifications 变量中。问题是这样的,在第一次登录时它不会加载组部分,只有在我导航到另一个页面并返回之后,或者收到将填充它的新通知。

我尝试更改 created 和 beforeMount 的挂载钩子,但无济于事。我认为问题出在 concat 方法上......有没有办法在不完全改变它的实现方式的情况下解决这个问题?

只是一些图片来说明我在说什么:登录并重定向到通知组件所在的主页后: 登录并重定向到组件所在的主页后。 没有群组通知,只有用户

然后在刷新或其他任何东西之后它可以工作

在此处输入图像描述

提前致谢!