Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 无模式的Mongoose只读_Node.js_Mongodb_Mongoose - Fatal编程技术网

Node.js 无模式的Mongoose只读

Node.js 无模式的Mongoose只读,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我在node.js应用程序中使用Mongoose对数据库中的两个集合进行建模,它将读取和写入这两个集合。还有两个集合将从我的应用程序中只读(这些集合的模型将在另一个应用程序中维护,该应用程序将向它们写入) 如果我需要使用mongoose访问这两个只读集合,那么我还必须在这个应用程序中维护一个模式。我不希望这样做,因为模式将被维护两次,并且可能导致以后的不一致性 Mongoose中的默认连接可以通过以下方式创建: Mongoose.connect(dbPath) 给定一个数据库路径(例如mong

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

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

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

Mongoose.connect(dbPath)

给定一个数据库路径(例如
mongodb://localhost/dbname
),如何使用Mongoose默认连接来读取我的应用程序未维护其架构/模型的集合?或者我必须使用本机MongoDB驱动程序进行相同的操作吗?

如果只是使用Mongoose读取集合,则可以将架构定义保留为空

因此,如果您有一个名为
test
的只读集合,类似这样的集合将起作用:

var Test = mongoose.model('Test', new Schema(), 'test');
Test.findOne({name: 'John'}, function(err, doc) { ... });
或者,为了获得更好的性能,如果不需要任何模型实例功能,请在查询链中包括:

Test.findOne({name: 'John'}).lean().exec(function(err, doc) { ... });
如果不使用
lean()
,则需要使用该方法访问文档的属性;例如:

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

以这种方式使用模型时,如何引用生成的文档的一个属性?使用点表示法给了我未定义的错误。parse返回“unexpected token”,我对Mongoose有点陌生,但这似乎是一个设计缺陷。如果从现有集合读取不需要架构,为什么需要架构。我遇到过这样的情况:一个系统定义并填充了一个集合,而另一个系统(仅)从中读取。第二个系统将一个模式传递给
model()
,虽然不完整,但似乎并不重要,这令人困惑。在我看来,所涉及的机制本可以得到更明确的界定。