Mongoose ODM 在 MongoDB 集合中保存了错误的模型名称
Mongoose ODM saves wrong model name in MongoDB collection
你好 Whosebugers!
我在 Mongoose 创建名为 "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'))
当我打开数据库 shell 并发出此命令时:
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",而 mongoose 似乎将其从 safes > saves ...
mongoose 是否有某种不能使用的受保护模型?
他们似乎对以 "fe" 结尾的单词设置了规则,因为它们通常会转换为复数形式 "ves"(knife -> knives)。
您可以通过向 Schema 添加另一个参数来设置自己的集合名称:
const safeSchema = new Schema({ name: String }, { collection: 'safes' })
Mongooses util.toCollectionName
根据架构名称生成集合名称。它确实使用了一些正则表达式,其中之一是:
[/(?:([^f])fe|([lr])f)$/gi, 'ves'],
它加工 safe 并将其替换为 saves.
你好 Whosebugers!
我在 Mongoose 创建名为 "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'))
当我打开数据库 shell 并发出此命令时:
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",而 mongoose 似乎将其从 safes > saves ...
mongoose 是否有某种不能使用的受保护模型?
他们似乎对以 "fe" 结尾的单词设置了规则,因为它们通常会转换为复数形式 "ves"(knife -> knives)。
您可以通过向 Schema 添加另一个参数来设置自己的集合名称:
const safeSchema = new Schema({ name: String }, { collection: 'safes' })
Mongooses util.toCollectionName
根据架构名称生成集合名称。它确实使用了一些正则表达式,其中之一是:
[/(?:([^f])fe|([lr])f)$/gi, 'ves'],
它加工 safe 并将其替换为 saves.