node.js - Mongoose 只读,没有架构

标签 node.js mongodb mongoose

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

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

Mongoose 中的默认连接可以通过以下方式创建

Mongoose.connect(dbPath)

给定一个 dbPath(例如 mongodb://localhost/dbname),我如何使用 Mongoose 默认连接从我的应用程序未维护架构/模型的集合中读取?还是我必须使用 native 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 只读,没有架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28630865/

相关文章:

javascript - 我可以在 webpack 开始构建之前获取依赖树吗?

javascript - 从数据库检查数据的异步解决方案各种循环子句

java - Spring 数据蒙戈: Find by array intersection

javascript - 使用 Node.js 的 mongodb 驱动程序返回嵌套数组中的第一个元素

javascript - 用下划线或其他东西组合 2 个 MongoDB 集合对象?

javascript - 如何使用 Microsoft-Graph 和 NodeJS 按日历名称获取日历事件?

javascript - 检查集合是否至少包含一个文档

node.js - 从每个用户的 userchat 获取最后一个文档 - mongoose

javascript - GraphQL 不允许在 NodeJS 中插入数组对象

node.js - 用于 pretty-print HTML 的模块?