- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在将 MongoMapper 用于我们的主数据存储,我想针对我们副本集中的从节点而不是主节点运行报告作业。不幸的是,我们的大部分后台作业都是读/写的,需要与主作业相对应。
有什么方法可以做如下的事情:
MongoMapper.options({:slave_ok => true})
report.fetch_data # does all sorts of stuff, uses normal Models, developer doesn't have to go out of his/her way to specify a read preference
MongoMapper.options({:slave_ok => force})
现在看起来 MongoMapper 真的只是希望您在建立连接时设置读取首选项,然后不要更改它。
最佳答案
MM 本身并不支持这一点,但通过插件在每个模型的基础上做到这一点并不难。
module MongoMapper
module Plugins
module ReadPreference
extend ActiveSupport::Concern
included do
class << self
attr_accessor :read_preference
end
end
module ClassMethods
def query(options={})
options.merge!(:read => read_preference) if read_preference
super options
end
def with_read_preference(preference)
self.read_preference = preference
begin
yield
ensure
self.read_preference = nil
end
end
end
end
end
end
MongoMapper::Document.plugin(MongoMapper::Plugins::ReadPreference)
并用我的 master-only 集群测试它:
2.0.0p0 :002 > User.first
=> <User:0x30a1948 _id: 4cddf1ff98db746691000002, display_name: (Deleted account)>
2.0.0p0 :003 > User.with_read_preference(:secondary) { User.first }
Mongo::ConnectionFailure: No replica set member available for query with read preference matching mode secondary and tags matching [].
有效!
如果你想对连接进行全局设置,你可以使用模块属性扩展 MongoMapper 模块,并修改插件以首先查找它。
关于ruby - 暂时将 MongoMapper 切换为从从属副本读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17774584/
如果我有: class Post include MongoMapper::Document has_many :comments end 如果我这样做: class Comment in
这是我的 irb session : irb(main):001:0> class User irb(main):002:1> include MongoMapper::Document irb(ma
我有一个带有嵌入文档的 mongomapper 文档,我想复制它。 本质上,我想做的是这样的: customer = Customer.find(params[:id]) new_customer =
我试图通过将类继承与 MongoMapper 一起使用来获得更好、更有条理的结果,但遇到了一些麻烦。 class Item include MongoMapper::Document key
有没有办法保存 MongoMapper 模型实例,以便不执行验证但调用回调?这类似于 ActiveRecord 的 whatever.save(false) 我在网上找到了一段代码,可以用来绕过验证和
在 MongoMapper 中,类可以从父类(super class)继承键和方法。在这里,我编写了包含整数键“baz”的代码,以及将其实例的 baz 值设置为连续计数的朴素排序方法。 require
我已经使用 MongoMapper 几个星期了,并且喜欢它的很多功能。最吸引人的功能之一是能够定义自定义 key 类型和验证方法(请参阅本页上的“自定义类型”:http://mongomapper.c
假设我们有两个模型,Task 和 User。所以一个用户可以有很多任务,任务也应该可以有很多用户。但是,任务还应该有一个独特的创建者,他也是用户。 例子: 这个上下文中的任务是这样的:任务ID、任务创
我有一个带有链接数组的 ruby 类。现在我可以保存一个 Paper 对象,即使该数组包含不是有效 url 的链接。我有一个遍历数组并验证 url 并在 url 无效时返回 false 的方法。但
我需要编写一个查询来查找在指定日期创建的所有文档。 假设日期是今天。 我试过了: Document.all(:created_at => Date.parse(Time.now.strftime('%
有没有人有很好的 MongoMapper 文档资源?我一直在阅读 mongoDB 文档,但其中很多都没有转换为 ruby/mm。我一直在试图弄清楚如何做一个 SELECT FROM WHERE E
我怎样才能让一个 mongo 模型进入一个数据库,而另一个使用另一个数据库? 我已发送此链接 https://github.com/jnunemaker/mongomapper/blob/master
我有一个 Rails 应用程序,当前使用 activerecord 来存储和查询产品。 每个产品都有一个类别和子类别,每个子类别由我可以在应用程序中创建的多个字段定义。由此,当用户想要输入特定产品时,
我不能使用 Array#shuffle,因为我没有获取所有文档(我最多只获取 20 个文档)。我如何使用 MongoMapper(即在 MySQL 中使用 ORDER BY RAND())从 Mong
如何在运行时改变当前的MongoMapper数据库? 此外,有没有一种方法可以将模型映射到名称是动态计算的数据库?例如: class MyEntity include MongoMapper:
我正在将 MongoMapper 用于我们的主数据存储,我想针对我们副本集中的从节点而不是主节点运行报告作业。不幸的是,我们的大部分后台作业都是读/写的,需要与主作业相对应。 有什么方法可以做如下的事
MongoMapper with Identity Map 是否支持级联删除?它似乎并不是真的,但我可能在文档中的某处遗漏了一些东西。请考虑以下事项: class User include Mon
尝试使用名为“buy-only”的键为文档设置 MongoMapper 对象。当我尝试启动应用程序时,我得到了这个 (eval):1: syntax error, unexpected '-', ex
我正在寻找使用 MongoMapper 的预加载关联文档。假设我有一位作者对帖子有 :has_one 条件,我应该能够使用单个查询加载作者 Post.find(:all, :include => :a
在 MongoMapper 文档中我找不到任何实际编辑文档的方法。我在别处也找不到任何东西。我能找到的唯一方法是这种方法: class User include MongoMapper::Docu
我是一名优秀的程序员,十分优秀!