簡體   English   中英

Mongoose ODM在MongoDB集合中保存了錯誤的模型名稱

[英]Mongoose ODM saves wrong model name in MongoDB collection

你好Stackoverflowers!

我遇到了一個奇怪的問題,貓鼬創建了一個名為“ Safes”的集合。

這是我的示例代碼:

const mongoose = require('mongoose')
mongoose.connect('mongodb://mongodb:27017/test', { useNewUrlParser: true })

const Safe = mongoose.model('Safe', { name: String })

const safe = new Safe({ name: 'foobar' })
safe.save().then(() => console.log('done'))

當我打開數據庫外殼並發出以下命令時:

mongo test --eval "db.getCollectionNames()"

其回應為:

MongoDB shell version v4.0.6
connecting to: mongodb://127.0.0.1:27017/test?gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("f9cfa8b9-58e2-40b8-9907-ecd18039935a") }
MongoDB server version: 4.0.6
[ "saves" ]

現在,我試圖用集合名稱“ Safes”創建一個模型,貓鼬似乎從“ safes”>“ saves”更改了它。

貓鼬有某種無法使用的受保護模型嗎?

似乎他們為以“ fe”結尾的單詞設置了規則,因為它們通常會轉換為“ ves”(刀->刀)的復數形式。

您可以通過向Schema添加另一個參數來設置自己的集合名稱:

const safeSchema = new Schema({ name: String }, { collection: 'safes' })

貓鼬util.toCollectionName根據架構名稱生成集合的名稱。 它確實使用了一些正則表達式,其中之一是:

  [/(?:([^f])fe|([lr])f)$/gi, '$1$2ves'],

這maches SA FE與SA VES替換它。

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM