没有架构的Mongoose只读

时间:2015-02-20 14:05:27

标签: node.js mongodb mongoose

我在我的node.js应用程序中使用Mongoose来模拟数据库中的两个集合,它将进行读写。还有两个集合只能从我的应用程序中读取(这些集合的模型正在另一个应用程序中维护,它将写入它们)。

如果我需要使用mongoose访问两个只读集合,那么我还必须在此应用程序中维护一个模式。我宁愿不这样做,因为架构将被维护两次,以后可能导致不一致。

Mongoose中的默认连接可以通过

创建
Mongoose.connect(dbPath)

给定dbPath(例如mongodb://localhost/dbname),如何使用Mongoose默认连接从我的应用程序未维护其架构/模型的集合中读取?或者我是否必须使用本机MongoDB驱动程序?

1 个答案:

答案 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