问题标签 [mongoid4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
623 浏览

ruby-on-rails - 如何解决“未授权查询 db.users”Mongoid

我使用 Rails 4 和 Mongoid 4 创建了一个新的 Rails 应用程序"not authorized for query on mydb.users"。运行测试时出现此错误:

起初我以为这是 Mongoid 和 MongoDB 的授权问题,但我可以访问 mongoldb/db/collection 而无需在控制台中进行身份验证而不会遇到麻烦。

因为我是 Rspec 测试的新手,所以我不确定问题出在我的测试、mongoid 还是 mongodb 上。

有任何想法吗?

0 投票
1 回答
110 浏览

ruby-on-rails-4 - Rails 嵌套模型优化查询

编辑:我正在使用 Mongoid,所以没有链接也没有has_many through:

我正在为项目管理开发一个后端,并且我有“深度”相关的模型

现在,我为我的用户编写了一个侧边栏。在此侧边栏中,如果用户有承包商资料,我想显示活动项目的数量

实现对这些信息的访问的最佳方式是什么?

我们一次可能会讨论多达 30 个活动项目,每个项目有 1 到 6 个任务(但许多步骤与相同的承包商),并且承包商通常总共有几个项目(活动或不活动)。

我的想法:

  • 查看current_contractor作业 -> 步骤 -> 项目 -> 计算活动的
  • 查看活动项目 -> 任务 -> 查找匹配的承包商current_contractor
  • 也许在每个作业中添加一个belong_to :project(我怎样才能确保它与self.step.project?)能够跳转到 Contractor -> assignments -> projects & count
0 投票
1 回答
499 浏览

ruby-on-rails - 如何为用户获取所有嵌入的 mongoid 文档

在 Mongoid (Rails) 中,我有 3 个模型:FileVersionUser版本是 embedded_in File,并且FileVersion都属于User (尽管对于File中的所有Version不一定相同)。

现在我想检索属于特定User或嵌入在属于同一User的File中的所有Version

我试过了:

  1. 几乎任何东西Version.<something>,总是 0 结果(可能是因为Version不是顶级文档?)
  2. File.any_of(user: user, 'versions.user': user): NoMethodError: #<User:0x00000007cd9400> 的未定义方法 `bson_type'
  3. File.any_of(user: user, 'versions.user_id': user.id): 只返回属于User的File,而不是嵌入属于用户的Version的File

如何以数据库友好的方式实现这一点(不获取所有File并迭代它们的Version)?

0 投票
1 回答
48 浏览

ruby-on-rails - 需要帮助从多个表中设置关联 Rails4 mongoId

当老师设置他/她的可用性时,我在这里设置关联有问题。教师只能针对他/她注册的课程设置可用性。从 CourseType 表中预定义的课程列表。

在教师注册时,用户需要选择教师可以教授的课程。

所以对于教师来说,在设置可用性时,只有那些课程应该是可见的。

0 投票
1 回答
91 浏览

ruby-on-rails-4 - Rails 检查重复模型

我在我的 Rails 应用程序中犯了一个错误,我没有强制登录的唯一性。现在我想通过在我的代码中(手动)查找和删除重复项来清理这个烂摊子。

我可以在 Rails 控制台中输入一个很好的命令来让我找到那些重复项吗?例如。找到两个具有相同登录名的用户,也许制作一个重复数组?

0 投票
1 回答
61 浏览

ruby-on-rails - mongoid 范围找到错误的对话

我的模型有以下范围:

这试图找到两个人之间的对话,在我的控制器上我有以下操作:

这是我的问题:

我有 3 个以上的用户:

用户,A,B,C,D……任何人之间没有对话。我创建了用户A和用户B之间的对话。对话不存在,所以创建,然后如果用户A想与用户C开始对话,模型返回false,因为对话不存在,儿子我的控制器需要创建一个新的,但是,控制器打开了用户 A 和用户 B 之间的对话,但它必须在用户 A 和用户 C 之间创建一个新的对话,并打开这个对话。

我做错了什么??我尝试了不同的浏览器并清理了我的缓存。


更新:

创建第一个对话后,它总是显示第一个对话。我是说:

第一次对话

  • 用户 A - 用户 B

尝试在以下用户之间创建其他对话:

  • 用户 A - 用户 C,显示对话用户 A、B
  • 用户 C - 用户 B,显示对话用户 A、B
  • 用户 C - 用户 D,显示对话用户 A、B
0 投票
0 回答
596 浏览

ruby-on-rails - Mongoid - 查询嵌套对象并匹配数组

我的模型

现在我需要构建一些查询/范围。这个想法是项目有很多技能,项目经理希望能够找到一个拥有这些技能的人的列表

基本上:几个技能[skillA,skillB,skillC]与项目A相关联。项目经理想找到有能力的人

  • 技能A和技能B
  • 技能A或技能B
  • (技能 A 和技能 B)或(技能 A 和技能 C)

是否可以定义一些不错的 mongoid 范围让我轻松做到这一点?

我看了一下这个问题,我想出了以下范围,但它只涵盖了上面提到的 3 个案例之一。

0 投票
1 回答
282 浏览

ruby-on-rails-4 - 如何在 Rails 4.2 中使用 secrets.yml 将密钥传递给 mongoid.yml?

这是我第一次使用 Mongoid,在测试/本地服务器中一切正常,但是在部署到 IBM Bluemix 时我遇到了困难(不要问我为什么选择 Bluemix,我知道如果我部署到它可能会更容易) Heroku 使用 Figaro。)

我正在使用它的 uri 连接到 MongoLab。

在我的 scerets.yml 中:

在我的 mongoid.yml

当我部署应用程序时,由于 uri 为 nil,暂存失败。 我知道这一点,因为我通过对 uri 进行硬编码进行了测试,并且它可以工作。

我目前没有在我的 .gitignore 中包含 mongoid.yml,所以如果我可以插入 uri:<%= Rails.application.secrets.mongo_url %>,我应该是安全的。

我还尝试将 uri 硬编码到 mongoid.yml 中并将其包含在 gitignore 中,但它给了我一些其他错误,我想知道哪种方法更好。

这是我收到的错误消息:

同样,这是因为我设置的 urisecrets.ymlmongoid.yml.

提前致谢!!

0 投票
2 回答
1336 浏览

ruby-on-rails - 如何让具有枚举字段类型的模型通过规范测试 - Mongoid

编辑:根据@max 的建议,我将模型更改为使用枚举,但是我无法测试它的默认状态:

在模型中使用以下代码可以正常工作:

但这部分仍然失败:

请注意,我使用的是 Mongoid。我的模型规格中有这个:

旧问题 - 留作参考?

在我的模型中,我有这个:

然而还是不行。我试过删除 Mongoid 位但得到同样的错误:

Failure/Error: it { is_expected.to have_field(:published).of_type(Boolean).with_default_value_of(false) } Expected Post to have field named "published" of type Boolean with default value of false, got field "published" of type Mongoid::Boolean

注意:我也试过:

并在我的模型中添加了以下方法:

然后

但似乎没有任何效果。我错过了什么?

0 投票
0 回答
37 浏览

ruby-on-rails - 仅当用户属于某种类型(使用 Enum,Mongoid)时,如何强制执行belong_to

我正在使用 Mongoid 和 Mongoid-Enum。

这是我的User模型片段:

对于我的Voice模型,我编写了一个测试(使用 Mongoid-rspec 网站中的示例),例如:

在我的Voice模型中:

但是我无法通过测试。如何强制用户属于特定类型(艺术家,通过枚举)?