我已经阅读了一些有关如何将Mongo与Node结合使用的指南,它们似乎都以不同的方式连接到数据库。一种对我有效的特定方式是:
MongoClient.connect("mongodb://localhost:27017/exampleDb", function(err, db) {
if(err) { return console.dir(err); }
db.createCollection('users', function(err, collection) {});
//Do all server/database operations in here
});
但是,这对我来说似乎效率低下/很奇怪,每当出现时,我就不得不重新连接到数据库app.get()
,例如用于创建新用户或检索信息。
似乎更适合我的另一种方法是
var mongoose = require("mongoose")
var db = mongoose.connect("localhost:27107/users");
db.createCollection('users', function(err, collection) {});
我已经看到有几个网站可以按照这些方式进行操作,但是我个人无法满足上述要求。我一直在TypeError: db.createCollection is not afunction
服务器端收到错误消息。因此,我的问题是,如果第一个代码是一个不错的选择,以及是否还有其他方法可以实现上述代码,那么为什么上述代码不起作用。
您可以使用 全局变量 来保存连接(例如db
),例如:
var db = null // global variable to hold the connection
MongoClient.connect('mongodb://localhost:27017/', function(err, client) {
if(err) { console.error(err) }
db = client.db('test') // once connected, assign the connection to the global variable
})
app.get('/', function(req, res) {
db.collection('test').find({}).toArray(function(err, docs) {
if(err) { console.error(err) }
res.send(JSON.stringify(docs))
})
})
或者,如果您愿意,也可以使用 Promise对象 ,该 对象 在MongoClient
没有回调参数的情况下被调用返回:
var conn = MongoClient.connect('mongodb://localhost:27017/') // returns a Promise
app.get('/', function(req, res) {
conn.then(client=> client.db('test').collection('test').find({}).toArray(function(err, docs) {
if(err) { console.error(err) }
res.send(JSON.stringify(docs))
}))
})
请注意,我在第二个示例中使用了ES6粗箭头功能定义。
您绝对不应该MongoClient
每次都打电话。使用全局变量或Promises允许MongoDB
node.js驱动程序创建连接池,该连接池至少可以实现两个优点:
编辑2018-08-24
:MongoClient.connect()
node.js驱动程序3.0及更高版本中的方法返回客户端对象而不是数据库对象。修改了以上示例,以使其与最新的node.js驱动程序版本保持最新。
本文向大家介绍Node.js 使用Mongoose连接到MongoDB,包括了Node.js 使用Mongoose连接到MongoDB的使用技巧和注意事项,需要的朋友参考一下 示例 首先,使用以下命令安装Mongoose: 然后,将其添加server.js为依赖项: 接下来,创建数据库模式和集合名称: 创建一个模型并连接到数据库: 接下来,启动MongoDB并server.js使用运行node s
我读过一些关于如何将Mongo与Node一起使用的指南,它们似乎都以不同的方式连接到数据库。对我来说很有效的一种特殊方式是: 然而,这对我来说似乎是低效/奇怪的,每次有时,我都必须重新连接到数据库,例如创建新用户或检索信息。 另一种似乎更适合我的方式是 我见过几个网站按照这些思路做了一些事情,但我个人无法让上面的工作。我一直收到错误服务器端。所以,我的问题是为什么上面的代码不起作用,如果第一个代码
我正在尝试将我的节点应用程序连接到mongo集群,我已经使用了这种方法 但它会抛出这个错误 (节点:8701)UnhandledPromiseRejectionWarning:未处理得承诺拒绝(拒绝ID:2):MongoError:拓扑已被破坏(节点:8701)[DEP0018]DeprecationWarning:不推荐未处理得承诺拒绝.将来,如果re未被处理,则承诺拒绝将使用非零退出代码终止n
问题内容: 如何使用Node.js通过SSL连接到MongoDB服务器? 我已经阅读了一些驱动程序(mongojs,mongodb- native )的源代码,并且我已经搜索了一段时间,但是似乎找不到任何合适的教程,指南或文档。 问题答案: 如评论中所建议,具有所需的一切。 我使用以下命令启动并运行: 编辑 你也可以从猫鼬做ssl :
MongoDB是一种文档导向数据库管理系统,由C++撰写而成。 本章节我们将为大家介绍如何使用 Node.js 来连接 MongoDB,并对数据库进行操作。 如果你还没有 MongoDB 的基本知识,可以参考我们的教程:MongoDB 教程。 安装驱动 本教程使用了淘宝定制的 cnpm 命令进行安装: $ cnpm install mongodb 接下来我们来实现增删改查功能。 创建数据库 要
我正在处理一个节点。js服务器,连接到MongoDB,用TypeScript编写。当我尝试使用MongoDB时,它不会创建连接,但是当我检查mongo输出时,它似乎确实创建了连接。 在节点中定义连接的代码中缺少了什么。js? 我的连接字符串是 我的连接方式: Mongo输出: 2018-11-08T23:06:24.106 0100网络[监听器]连接从127.0.0.1:51345#11接受(2个