mongoose只读没有模式

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

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

Mongoose中的默认连接可以通过创build

Mongoose.connect(dbPath) 

给定一个dbPath(例如, mongodb://localhost/dbname ),我怎样才能使用Mongoose默认连接从集合的模式/模型不被我的应用程序维护读取? 或者我将不得不使用相同的本地MongoDB驱动程序?

如果您只是使用Mongoose从集合中读取数据,则可以将模式定义保留为空。

所以,如果你有一个名为test的只读集合,就可以这样工作:

 var Test = mongoose.model('Test', new Schema(), 'test'); Test.findOne({name: 'John'}, function(err, doc) { ... }); 

或者为了获得更好的性能,如果您不需要任何模型实例function,请在查询链中包含lean()

 Test.findOne({name: 'John'}).lean().exec(function(err, doc) { ... }); 

如果您不使用lean() ,则需要使用get方法访问文档的属性; 例如:

 doc.get('name') // instead of doc.name