问题标签 [mongoose-schema]
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.
javascript - 在更新使用 Mongoose 模型检索并作为承诺处理的文档时遇到问题
跳转到更新 #2 以获得更详细的信息
我对通过 Mongoose 模型查询容器检索到的文档进行简单更新时遇到问题。该find
查询确实有两个群体,但除此之外,我不确定问题可能是什么
我遇到的问题是,当我检索文档,更新属性,然后尝试通过 MongoosesDoc.save()
方法将更新保存到文档时,似乎什么也没发生。奇怪的是,save() 甚至没有触发传递给它的回调..(或者触发then()
或者catch()
如果我将其作为 Promise 处理)
型号:资产
只是为了一些细节,这里有一个来自相同查询的示例结果,find
具有相同的两个群体
文件查询
这是我通过该方法检索一些文档的代码示例Foo.find
(有效),并更新第一个属性的值(我有效),但是当我尝试访问a.save()
文档时..没有任何反应:
在控制台中,一切都按预期显示,直到a.save()
.. 既不显示错误也不Updated!
显示。
这绝对是我正在与之交互的 Mongoose 文档(a instanceof Foo
显示为真),所以我完全不确定为什么 save() 没有做任何事情..
我尝试将其a.save()
作为 Promise 进行处理,而不是对其进行回调,然后再一次,什么也没发生,then
or也没有catch
被执行。
这真让我抓狂!!我确定它是我忽略的一些愚蠢的东西,但我似乎找不到它。任何帮助将不胜感激
PS我没有包括分区或字段模型/模式,因为我非常怀疑它们是否相关......但如果有人这么认为,请告诉我
PSS仅供参考,MongoDB 用户确实具有写入权限
更新#1
根据@JohnnyHK 的建议,我尝试执行Doc.markModified()
:
没有变化...a.save()
控制台中不显示任何内容,并且文档未更新
更新#2
经过一番修修补补..这似乎与它是一个承诺有关..
这是成功的:
这是不成功的:
我能想到的唯一区别是承诺,而不是回调
什么超级奇怪......是.then()
执行中的一些代码......只是不是save()
更新#3
我创建了一个github 问题,并且根据我上次的更新..
我发现了这个问题,他的“解决方案”是将整个主要版本从 4.X 降级到 3.X...
我当前的版本是^4.3.7,我尝试将其更改为3.8.35,降级顺利,但脚本本身引发了一堆错误......老实说,id 真的不使用这么旧的反正版本。
node.js - 如何为给定的集合定义猫鼬模式?
所以这只是一个简短的版本,会有很多日期和时间段。我想在猫鼬中定义模式,以便我可以查询数据库。模式应该如何,因为我很困惑如何概括每个日期。以及在定义的模式中,如果特定时间段,我将如何编写查询以更改特定日期的可用性?
javascript - 为任何更新查询增加 Mongoose 文档版本的简单方法?
我想开始利用 Mongooses 文档版本控制(__v 键)。我在实际增加版本值时遇到了问题,然后我发现您必须this.increment()
在执行查询时添加。
有没有办法自动增加?现在,我只是将它添加到pre中间件中以进行更新类型的查询:
这似乎可行..但我有点认为猫鼬已经有办法做到这一点..我错了吗?
mongodb - 合并两个 Mongoose 查询结果,而不将它们转换为 JSON
我有两个 Mongoose 模型模式设置,以便子文档引用父文档,而不是父文档具有一组子文档。(由于对文档的 16MB 大小限制,我不想限制父/子文档之间的关系数量):
我想创建一个静态方法,我可以查询父文档,然后查询与父文档匹配的任何子文档,然后在父文档中创建一个将引用子数组的新项目。
基本上,如果父文档是:
子文件是:
然后我希望有类似的东西:
另外,我希望它们保留 Mongoose 文档,以便在需要时更新父母和资产。
我能够通过toJSON
在 Parent 上使用来完成此操作,然后创建一个包含 Child 文档的新项目,但显然 Parent 文档不是真正的文档..
当我尝试这样做时,我一直遇到的错误是我无法在文档中创建一个不在架构中的新元素。
我知道我可以做一些事情,比如创建一个虚拟项目,它会返回查询孩子的承诺,但我希望有一个静态方法,返回一个响应(这意味着他们不必将虚拟项目作为承诺或回调处理)
让我知道这是否可能。谢谢!
node.js - 如何用猫鼬保存子文档对象 ID,以及它的一些字段?
我想保存 Tower obj 和 flat obj。塔式架构
平面模式
我正在尝试用 mongoose save 来保存它
我的输出应该是这样的
我是 mongoose 和 Node 的初学者。请在这里帮助我。
javascript - Mongoose schema for array of sub-documents ids from a different collection
I have a schema like this for a family (whose children are enrolled in a school)...
I'd like to describe many schools that contain classrooms, and have the classrooms contain students, something like this...
How do I tell mongoose that I want an array of object ids for students found in the other collection?
I understand from this answer that, if I wanted the classrooms to refer to family documents, I could say something like:
but how do I do the same for sub-documents of another collection? (If it isn't obvious, I'm just learning both mongo and mongoose).
node.js - Mongoose 聚合查询 $max in $match
我是猫鼬的新手,在尝试使用聚合查询获取一些数据时遇到问题。
我的拍卖模式的一部分是:
这里,fancy_number 是拍卖集合下的数组,bid_users 是每个fancy_number 下的数组。
我有 user_id,我想查询并只获取他是最高出价者的 bid_user 记录。
例如:
有 3 个用户分别出价 200,300,400,只有当这个特定用户出价为 400(最高)时,我才想获得记录(即数量和金额)。将在哪里传递 user_id
我写的聚合查询是:
不知何故,这个查询不起作用,它只给出最高出价和数量的记录。只有当他是出价最高的人时,我才想要记录。
mongoose - 在猫鼬中指定嵌套数组的类型?
我的架构
问题:它被识别为字符串。但我希望它是数字类型。
因此,模型的有效示例是:
所以我的问题是:如何指定正确的类型?
我试过[[Number]]
哪个不起作用。
node.js - 将集合名称传递给猫鼬模型
我想将集合的名称从我的主 app.js 文件传递给它,然后在模型代码中指定它,有没有办法可以做到这一点?