我在node.js上将猫鼬与cosmosdb(带有mongodb api)一起使用。 在生产环境以外的任何环境中运行时,我想对许多应用程序使用相同的数据库,并在集合名称上添加前缀。
我能够做到这一点:
const DB_PREFIX = config.get('APP_NAME')
const ENV = config.get('NODE_ENV')
const UserSchema = new Schema({
name: { type: String, required: true }
})
const collection = ENV === 'production' ? 'users' : `${DB_PREFIX}-users`
module.exports = mongoose.models.Users || mongoose.model('Users', UserSchema, collection)
但不是在每个模型定义上都这样做,而是可以在一个地方(例如,当我创建连接时)在猫鼬对象上创建或覆盖某些东西以添加默认前缀,因此我的模型会更干净?
我可以编写一些函数来创建模型,并在模型中使用它而不是mongoose.model(modelName, schema)
,但如果可以的话,我想做一些根本不需要更改模型文件的事情。