nuxt.js - Nuxt - 页面刷新时获取生命周期挂钩的行为
问题描述
我不确定这是否是预期的行为,但简而言之,我遇到了一个问题,即我的通用模式 Nuxt 应用程序在刷新页面后无法从 Firebase 读取。这是因为请求来自服务器,因此 Firebase 将其视为未经身份验证的用户。我通过在受影响的页面上强制使用 SPA 模式来解决它,它可以工作,但我不喜欢它作为解决方案。
发生这种情况的原因是我正在/正在使用 Firebase 客户端库(因此从客户端进行调用)。我正在使用 Nuxt 的fetch()
钩子来调用读取操作。我使用了客户端库,因为我(也许天真地)认为这对页面性能更好。
为了停止刷新失败,我应该(我相信)fetchOnServer: false
按照 Nuxt 文档附加到 fetch 挂钩。
但是,这并不能解决问题。
我怀疑这是因为刷新没有像通过 Nuxt 路由器导航到页面那样调用 Nuxt/Vue 功能。这个对吗?(我可以看到即使fetchOnServer
设置为 Falsefetch()
仍然会导致服务器端向 Firebase 请求失败,正如预期的那样)。除了在上面的页面上强制 SPA 之外,还有其他方法吗?如果没有,我可能会考虑使用 Firebase-Admin 库。
感谢您对此的任何反馈。
编辑:这是我目前在 SPA 模式下运行的示例查询 - 这将返回允许给定用户访问的所有事件。结果当然会返回给 Vuex 进行客户端渲染 :)
async getListOfEvents(uid) {
fireDb = firebase.firestore()
await firebase.auth().currentUser
const pList = fireDb
.collection('presentations')
.where('usersWithPerms', 'array-contains', uid)
.where('status', '==', 'ACTIVE-VISIBLE')
try {
const messageDoc = await pList.get()
const aVP = []
let rObj = {}
messageDoc.forEach(function (childSnapshot) {
const o = childSnapshot.data()
rObj.pName = o.eventName
rObj.synopsis = o.synopsis
rObj.urlSlug = o.urlSlug
rObj.owner = o.owner === uid
aVP.push(rObj)
rObj = {}
})
return aVP
} catch (e) {
console.log(`Error during getting LIST of events! ${e}`)
}
},```
解决方案
我不知道我是否完全理解您的问题,但我想您只想在特定页面的客户端上从 firebase 获取数据。
所以,你可以这样做:在一些 vue lifeCycle 方法上调用你的方法,比如 created() 或 mount() 并添加process.browser
验证。像这样的东西:
created() {
if (process.browser) {
// fetch from firebase
}
}
推荐阅读
- android - 如何:定位本地 android 依赖项
- xml - 将 XML 任务结果(在任务调度程序中)导出到 mongo DB
- here-api - 获取最近的“link_id”来协调
- python - 明确告诉代码分析工具一个方法将返回一个继承的类而不是基类
- reactjs - 在上下文中对许多重新渲染做出反应
- python - 在 3D 散点图中绘制每点 alpha 值会引发 ValueError
- wordpress - 如何根据数量产品创建自定义字段到 wc 结帐字段,保存并显示到管理订单页面和 dokan 订单页面?
- php - 使用 php 对所有学生取一门学科的平均值
- amazon-web-services - GCP for AWS lambda 中对应的云函数
- python - 如何成功显示从数组中提取的这个 PNG 图像?(对PIL的理解差)