我在我的node.js应用程序中使用Mongoose来模拟数据库中的两个集合,它将进行读写。还有两个集合只能从我的应用程序中读取(这些集合的模型正在另一个应用程序中维护,它将写入它们)。
如果我需要使用mongoose访问两个只读集合,那么我还必须在此应用程序中维护一个模式。我宁愿不这样做,因为架构将被维护两次,以后可能导致不一致。
Mongoose中的默认连接可以通过
创建Mongoose.connect(dbPath)
给定dbPath(例如mongodb://localhost/dbname
),如何使用Mongoose默认连接从我的应用程序未维护其架构/模型的集合中读取?或者我是否必须使用本机MongoDB驱动程序?
答案 0 :(得分:11)
如果您只是使用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的属性;例如:
doc.get('name') // instead of doc.name