【问题标题】:failed with error 10068: "invalid operator: $oid"失败,错误 10068:“无效的运算符:$oid”
【发布时间】:2013-01-29 21:27:39
【问题描述】:

刚刚更新到最新版本的 mongoid (3.1.0) 和 sidekiq (2.7.2)
现在我收到错误:failed with error 10068: "invalid operator: $oid"
通过查看代码,我看到了这样的选择:@selector={"_id"=>{"$oid"=>"[some id]"}}
这里有什么问题?

【问题讨论】:

    标签: ruby-on-rails mongodb mongoid sidekiq


    【解决方案1】:

    将此添加到我的gemfile 解决了这个问题:

    gem 'multi_json', '1.5.1'
    

    我猜最新版本 (1.6.0) 有问题

    编辑: gem 已更新到新版本 (1.6.1) 以解决此问题。更多在这里: https://github.com/intridea/multi_json/issues/89

    【讨论】:

    【解决方案2】:

    这实际上正在发生,因为 BSON::ObjectId 不是 JSON 的一部分......所以当 Sidekiq 尝试将 args 序列化给工作人员时,它会呕吐。看看这条评论:https://github.com/mperham/sidekiq/issues/951#issuecomment-19497803

    解决方法是在执行以下工作时将 ID 转换为字符串:

    EmailSubscribe.perform_async(user.id.to_s)
    

    【讨论】:

      猜你喜欢
      • 2014-07-21
      • 1970-01-01
      • 2012-02-20
      • 1970-01-01
      • 2020-01-30
      • 2014-10-05
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      相关资源
      最近更新 更多