问题标签 [mongoose-models]

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 回答
51 浏览

mongodb - Mongoose 错误 - 具有相同型号名称的 Mongoose 型号

我正在开发 NodeJs 应用程序,并且正在使用 mongoose 节点包。

示例代码

我正在使用以下方法创建动态集合,这些集合有时无法将数据持久保存在数据库中 -

我正在使用这个导出的模块来创建基于作为suffix参数传递的唯一 ID 的动态集合。像这样的东西(跳过不必要的代码) -


问题

问题是,测试 2 失败了!API会insertmany导致 0 条记录未能通过计数断言。

如果我们交换测试的顺序,测试 1 将失败。

如果我分别运行这两个测试,两者都会通过。

如果有 n 个测试,只有第一个测试会通过,剩下的测试会失败。


发现

我怀疑mongoose model creation step它有问题,因为它使用相同的型号名称,即。Model同时创建多个模型实例。

我将其更改为以下,并且测试在所有情况下都运行良好-

问题

这给我留下了以下问题-

  • 在创建动态集合时,我是否遵循正确的编码约定?
  • 可疑代码是否是此问题的实际原因(型号名称也应该是唯一的)?
  • 如果是,为什么会失败?(我关注了mongoose 文档,但它没有提供有关模型名称参数唯一性的任何信息。

谢谢。

0 投票
1 回答
554 浏览

node.js - 由于外国模型,钩子(中间件前)中的猫鼬模型查询(findById)错误

在这种情况下,我有两个模型:协议和注释。每个模型都有一个调用另一个模型的中间件(“pre”或“remove”)。在 Comment.js 中调用 Comment 中间件在 Protocol.findById() 处停止,因为 Protocol 是一个对象而不是模型函数。这是 Comment.js 中的 console.log(Protocol)

const Comment = require('../models/comment')在 Protocol.js 中删除时,Comment.js 中间件工作,控制台可以看到其中的协议如下:

我不理解这种行为。此外,反过来说,Protocol.js 中间件也能正常工作,尽管 Comment.js 有const Protocol = require('../models/protocol')

我在另一个主题中发现了一个技巧,即在中间件内部替换Protocol.findById()mongoose.model('Protocol').findById(),但这并不能解释问题。

脚本如下所示。如果您需要更多信息,请告诉我,我会提供。谢谢

Protocol.js 模型和中间件

Comment.js 模型和中间件

)

包.json

0 投票
1 回答
477 浏览

mongoose - difference between Query and Model mongoose

these days i'm trying to learn more about mongoose to implement it in my project ,while going through the doc , i saw both Model and Query, both have many methods in common ,my question is what is the difference between them for example

Model.findOne()vs Query.prototype.findOne(), and thank you in advance.

0 投票
0 回答
14 浏览

javascript - 如何使用 mongoose 向现有 json 文件添加新属性

我有以下模型代表现有的 json 文件。

我想将进球数添加到玩家并保存。这必须在 current_club 下使用 required false 完成。当玩家决定为与现有 json 文件中存储的国家不同的国家/地区比赛时,我还想更新国籍。

我基本上想知道如何“调用”模型,穿过它并保存它。

亲切的问候

0 投票
1 回答
76 浏览

mongoose - Artist.findOne 不是函数

当我在FindArtist.js文件中运行此代码时,我的 Electron 应用程序中出现错误:

我确实安装了猫鼬,但似乎我不再适当地导入猫鼬或艺术家模型?没有把握。

这是models/artist.js文件:

0 投票
3 回答
3491 浏览

mongodb - 如何连接/查询 Mongoose 到现有数据库

我正在尝试将 Node/Express 服务器连接到现有的 MongoDB 数据库/集合。我已经成功连接到数据库。但是,我在设置要查询的模型/模式时遇到了极大的困难。

MongoDB 是 MongoDB Atlas,拥有一个包含超过 800,000 个文档的集合。单个集合的名称是“delitosCollection”。

我尝试了以下但没有成功:

我知道连接正常,因为我收到了没有错误的 console.log。但是,results.length 在应该超过 800,000 时返回 0。在这上面花了太多时间。

0 投票
2 回答
1564 浏览

javascript - 型号名称(猫鼬)的大写?

为什么模型的名称是大写的。正如在他们的文档中一样,他们已将其大写。

为什么Tank这里要大写?有什么具体原因吗?

抱歉,如果这不是一个好问题。任何帮助,将不胜感激 :)

0 投票
0 回答
99 浏览

mongodb - 在猫鼬中使用地图方案类型时出错

我已经像这样定义了我的猫鼬模式

但是当我尝试编译代码时,出现类似 TypeError : Undefined type Mapat socialMediaHandles Did you try nesting Schemas?您只能使用 refs 或数组进行嵌套。

0 投票
0 回答
25 浏览

node.js - 为什么模块大部分时间都返回一个空白对象?

我试图弄清楚为什么我的模块没有正确加载。这是一个猫鼬模型,但即使只返回一个字符串,有时也会返回空对象,所以它似乎与节点有关。

文章/模型/articles.js

在这里我尝试称它为:

但这就是它的输出:

为什么会这样?空物体从何而来?它显然找到了正确的文件,因为没有错误。

如果我将 module.exports = 'hi' 移动到 article.js 的顶部,那么我会得到 a、b、c 和 d 的正确“hi”。但我试图让它返回在该文档中创建的模型对象。

我无法弄清楚问题出在哪里。

编辑:这似乎是一个循环依赖问题。Articles 和 Comments 模型都具有相互引用的功能,因为它们都需要。我不明白为什么他们不能,或者如何避免(仍然保持我的代码干净)。

0 投票
2 回答
95 浏览

express - 猫鼬填充()

参考https://mongoosejs.com/docs/populate.html#checking-populated给出的 Mongoose url populate 示例,两个 Schema 之间似乎存在双向关系。例如,如果我只有一种方式的关系怎么办(使用相同的模式示例,但 Person 模式没有Story ref )

如何返回如下所示的 GET Story 输出:

我现在总是得到这个: