вставка / кеширование в минимонго от Meteor.call - PullRequest
0 голосов
/ 22 февраля 2019

Поскольку мне нужно получить большие объемы данных от клиента, я использую Meteor.Call для извлечения данных.При этом данные не вставляются в адаптер minimongo на клиенте.Есть идеи, как я могу это сделать?Можем ли мы получить доступ к экземпляру minimongo на клиенте и кэшировать данные, не отправляя их обратно на сервер (то есть, не используя Collection./insert/upsert/update)?

1 Ответ

0 голосов
/ 22 февраля 2019

Вы можете создать локальную коллекцию на клиенте, если вы опустите имя и вставите туда свои данные из вызова метода.

Эта коллекция "неуправляемая" и не подключенак любой коллекции серверов.Затем вы можете вставить данные в коллекцию локально.

Небольшой пример для воспроизведения:

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

...