没有模式的猫鼬只读
Mongoose read-only without schema
我在我的 node.js 应用程序中使用 Mongoose 对数据库中的两个集合建模,它将读取和写入这些集合。还有两个集合只能从我的应用程序中读取(这些集合的模型正在另一个应用程序中维护,该应用程序将写入它们)。
如果我需要使用 mongoose 访问这两个只读集合,那么我还必须在此应用程序中维护一个架构。我宁愿不这样做,因为架构将被维护两次,以后可能会导致不一致。
Mongoose 中的默认连接可以通过
创建
Mongoose.connect(dbPath)
给定一个 dbPath(例如 mongodb://localhost/dbname
),我如何使用 Mongoose 默认连接来读取 schema/model 未由我的应用程序维护的集合?或者我必须使用本机 MongoDB 驱动程序吗?
如果您只是使用 Mongoose 从集合中读取数据,您可以将架构定义留空。
因此,如果您有一个名为 test
的只读集合,则可以使用如下方式:
var Test = mongoose.model('Test', new Schema(), 'test');
Test.findOne({name: 'John'}, function(err, doc) { ... });
或者为了获得更好的性能,如果您不需要任何模型实例功能,请在您的查询链中包含 lean()
:
Test.findOne({name: 'John'}).lean().exec(function(err, doc) { ... });
如果您不使用lean()
,您需要使用get
方法访问文档的属性;例如:
doc.get('name') // instead of doc.name
我在我的 node.js 应用程序中使用 Mongoose 对数据库中的两个集合建模,它将读取和写入这些集合。还有两个集合只能从我的应用程序中读取(这些集合的模型正在另一个应用程序中维护,该应用程序将写入它们)。
如果我需要使用 mongoose 访问这两个只读集合,那么我还必须在此应用程序中维护一个架构。我宁愿不这样做,因为架构将被维护两次,以后可能会导致不一致。
Mongoose 中的默认连接可以通过
创建Mongoose.connect(dbPath)
给定一个 dbPath(例如 mongodb://localhost/dbname
),我如何使用 Mongoose 默认连接来读取 schema/model 未由我的应用程序维护的集合?或者我必须使用本机 MongoDB 驱动程序吗?
如果您只是使用 Mongoose 从集合中读取数据,您可以将架构定义留空。
因此,如果您有一个名为 test
的只读集合,则可以使用如下方式:
var Test = mongoose.model('Test', new Schema(), 'test');
Test.findOne({name: 'John'}, function(err, doc) { ... });
或者为了获得更好的性能,如果您不需要任何模型实例功能,请在您的查询链中包含 lean()
:
Test.findOne({name: 'John'}).lean().exec(function(err, doc) { ... });
如果您不使用lean()
,您需要使用get
方法访问文档的属性;例如:
doc.get('name') // instead of doc.name