[英]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.