inserting/caching 在来自 Meteor.call 的 minimongo 中
inserting/caching in minimongo from Meteor.call
因为我需要从客户端拉取大量数据,所以我使用Meteor.Call来获取数据。这样做时,数据不会插入到客户端的 minimongo Adapter 中。知道我该怎么做吗?我们可以访问客户端上的 minimongo 实例并缓存数据而不将其发送回服务器(意味着不使用 Collection./insert/upsert/update
)吗?
如果您省略名称并在其中插入来自方法调用的数据,则可以在客户端创建本地集合。
此集合 "unmanaged" 未连接到任何服务器集合。然后您可以将数据插入到本地集合中。
要重现的一些最小示例:
server/main.js
import { Meteor } from 'meteor/meteor'
import { Mongo } from 'meteor/mongo'
import { Random } from 'meteor/random'
const SomeCollection = new Mongo.Collection('someCollection')
Meteor.startup(() => {
for (let i = 0; i < 5; i++) {
SomeCollection.insert({
key: Random.id()
})
}
})
Meteor.methods({
'docs' () {
return SomeCollection.find().fetch()
}
})
client/main.js
import { Meteor } from 'meteor/meteor'
import { Mongo } from 'meteor/mongo'
const LocalCollection = new Mongo.Collection(null)
Meteor.startup(() => {
Meteor.call('docs', (err, documents) => {
documents.forEach(doc => LocalCollection.insert(doc))
setTimeout(() => {
console.log(LocalCollection.find().fetch())
}, 2000)
})
})
客户端console.log输出:
0: {_id: "fKtSM2GEe3HQutqzf", key: "ndgcSoLDhh4tTekKy"}
1: {_id: "BcZE9TT9ZF5Qak3As", key: "Nw56vSnCAPtRGfw3j"}
2: {_id: "nWCD3Kk2arLHBJTN5", key: "ZP8mDaaqimZJQzM8c"}
3: {_id: "2H3haJiiv23dtJF94", key: "kue8BCWWasJJa74zm"}
4: {_id: "oDiF7ckK4PAXREFYe", key: "fvbv36kkPWb7uAcfN"}
5: {_id: "w3fz3GHP9W9suX2NG", key: "Cf6RCy2k3QA9KLxMX"}
文档中只有简短的参考:https://docs.meteor.com/api/collections.html
如果您正在寻找持久缓存,您可以查看 ground:db
因为我需要从客户端拉取大量数据,所以我使用Meteor.Call来获取数据。这样做时,数据不会插入到客户端的 minimongo Adapter 中。知道我该怎么做吗?我们可以访问客户端上的 minimongo 实例并缓存数据而不将其发送回服务器(意味着不使用 Collection./insert/upsert/update
)吗?
如果您省略名称并在其中插入来自方法调用的数据,则可以在客户端创建本地集合。
此集合 "unmanaged" 未连接到任何服务器集合。然后您可以将数据插入到本地集合中。
要重现的一些最小示例:
server/main.js
import { Meteor } from 'meteor/meteor'
import { Mongo } from 'meteor/mongo'
import { Random } from 'meteor/random'
const SomeCollection = new Mongo.Collection('someCollection')
Meteor.startup(() => {
for (let i = 0; i < 5; i++) {
SomeCollection.insert({
key: Random.id()
})
}
})
Meteor.methods({
'docs' () {
return SomeCollection.find().fetch()
}
})
client/main.js
import { Meteor } from 'meteor/meteor'
import { Mongo } from 'meteor/mongo'
const LocalCollection = new Mongo.Collection(null)
Meteor.startup(() => {
Meteor.call('docs', (err, documents) => {
documents.forEach(doc => LocalCollection.insert(doc))
setTimeout(() => {
console.log(LocalCollection.find().fetch())
}, 2000)
})
})
客户端console.log输出:
0: {_id: "fKtSM2GEe3HQutqzf", key: "ndgcSoLDhh4tTekKy"}
1: {_id: "BcZE9TT9ZF5Qak3As", key: "Nw56vSnCAPtRGfw3j"}
2: {_id: "nWCD3Kk2arLHBJTN5", key: "ZP8mDaaqimZJQzM8c"}
3: {_id: "2H3haJiiv23dtJF94", key: "kue8BCWWasJJa74zm"}
4: {_id: "oDiF7ckK4PAXREFYe", key: "fvbv36kkPWb7uAcfN"}
5: {_id: "w3fz3GHP9W9suX2NG", key: "Cf6RCy2k3QA9KLxMX"}
文档中只有简短的参考:https://docs.meteor.com/api/collections.html
如果您正在寻找持久缓存,您可以查看 ground:db