Ищу возможность использовать em-mongo для сценария текстового анализатора, который загружает текст из базы данных, анализирует его, помечает ключевые слова и обновляет базу данных.

Хотелось бы увидеть несколько примеров em-mongo в действии. Только один, который я смог найти, был в репозитории em-mongo на github.

   require 'em-mongo'

   EM.run do
     db = EM::Mongo::Connection.new.db('db')
     collection = db.collection('test')
     EM.next_tick do
       doc = {"hello" => "world"}
       id = collection.insert(doc)
       collection.find('_id' => id]) do |res|
         puts res.inspect
         EM.stop
       end
       collection.remove(doc)
     end
   end
5
sent-hil 23 Мар 2011 в 15:24

1 ответ

Вам не нужен метод next_tick, это em-mongo делает за вас. Определите обратные вызовы, которые выполняются, если выполняются действия базы данных. Вот скелет:

class NonBlockingFetcher
  include MongoConfig

  def initialize
    configure
    @connection = EM::Mongo::Connection.new(@server, @port)
    @collection = init_collection(@connection)
  end

  def fetch(value)
    mongo_cursor = @collection.find({KEY => value.to_s})
    response = mongo_cursor.defer_as_a

    response.callback do |documents|
      # foo
      # get one document
      doc = documents.first
    end

    response.errback do |err|
      # foo
    end

  end
end
2
mosen 24 Апр 2012 в 16:58
Что такое монгоконфиг?
 – 
B Seven
14 Июн 2018 в 21:29