Javascript 不带'的缓存;在';订阅
是否可以告诉firebase缓存路径而不进行“打开”订阅 目前我正在做以下工作,这既低效又浪费空间,而且很难看:Javascript 不带'的缓存;在';订阅,javascript,firebase,Javascript,Firebase,是否可以告诉firebase缓存路径而不进行“打开”订阅 目前我正在做以下工作,这既低效又浪费空间,而且很难看: const ref = new Firebase(someUrl) app.get('slow/:id', (req, res) => { ref.child(id).on('value', snapshot => res.send(snapshot.val())) }) const cache = {} ref.on('child_added', snapsh
const ref = new Firebase(someUrl)
app.get('slow/:id', (req, res) => {
ref.child(id).on('value', snapshot => res.send(snapshot.val()))
})
const cache = {}
ref.on('child_added', snapshot => cache[snapshot.key()] = snapshot.val())
ref.on('child_changed', snapshot => cache[snapshot.key()] = snapshot.val())
ref.on('child_removed', snapshot => delete cache[snapshot.key()])
app.get('fast_wasteful_ugly/:id', (req, res) => {
const val = cache[req.params.id]
if (val !== undefined)
res.send(val)
else
ref.child(req.params.id).once('value', snapshot => res.send(snapshot.val()))
})
简短的回答是否定的-目前没有任何方法可以告诉Firebase在不附加事件侦听器的情况下将数据缓存在路径上
也就是说,考虑一下你要解决的问题。如果您希望同步访问存储在Firebase中的数据,那么您上面提到的方法是目前最好的方法
然而,如果您只是想避免检索数据的网络往返,那么在需要维护缓存的位置附加一个Firebase事件侦听器可能会解决您的问题。在这种情况下,您将在附加侦听器时传递一个no-op块,并在整个代码中使用
ref.once('value',…)
。通过附加带有no op块的初始侦听器,对ref.once(…)
的所有子序列调用都将使用本地缓存,而不需要访问网络。Ok。不,是的。如果能有一个更务实的方法来做这件事就好了。