使用Node.js + MongoDB在Mac环境下建立数据库连接【2019版】
最近对于在Node.js中使用热门的NoSQL方法出现了希望用Node.js编写React的后端的想法,因此我整理了。
做好体操准备请问您是否已经安装了Homebrew和Node.js?
$ brew -v
Homebrew 2.1.15
Homebrew/homebrew-core (git revision 1ea06; last commit 2019-11-04)
Homebrew/homebrew-cask (git revision 932c87a; last commit 2019-11-04)
$ node -v
v11.6.0
$ brew -v
Homebrew 2.1.15
Homebrew/homebrew-core (git revision 1ea06; last commit 2019-11-04)
Homebrew/homebrew-cask (git revision 932c87a; last commit 2019-11-04)
$ node -v
v11.6.0
如果在输入命令后什么都没有发生时,请从以下内容安装。
在Mac上安装Homebrew和Node.js。
我们将继续在备受喜爱的 macOS 上进行开发。
建立环境首先,将MongoDB安装在Mac上。
暂时在家目录~/中执行以下命令。
$ brew tap mongodb/brew
在Mac上安装MongoDB
brew install mongodb-community@4.2
只要输入mongo命令,出现类似的情况就可以了。
$ mongo
MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
︙
为了在本地环境中使用MongoDB,需要启动数据库。
可以通过下面的命令启动MongoDB。
$ mongod --config /usr/local/etc/mongod.conf
在这里没有特别的输出,因此请打开一个新终端来确认MongoDB是否已经启动。
//新しいターミナル画面で
$ mongo
MongoDB shell version v4.2.1
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
︙
To enable free monitoring, run the following command: db.enableFreeMonitoring()
To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
---
>
如果终端处于等待输入状态,那就成功了。
使用 control^ + C 来退出Shell。
把 mongod –config /usr/local/etc/mongod.conf 添加为 alias,这样会更加方便。
有关 alias 的设定方法,推荐阅读这篇文章。【初学者向】设定alias的方法
我在mongodb中注册了一个用于启动服务器的别名。
当使用MongoDB时,请保持服务器运行,并继续工作(使用mongod –config /usr/local/etc/mongod.conf命令)。
也许有一种方便的设备可以自动启动,而无需键入命令,但是我现在没有足够的精力,所以将来再进行调查。
好了,一切准备就绪。
让我们开始写Javascript吧。
将JavaScript和MongoDB进行连接。
首先,让我们创建一个工作目录。
$ mkdir mongo-curd
$ cd mongo-curd
$ mkdir mongo-curd
$ cd mongo-curd
使用npm来安装可以使MongoDB在node.js中使用的驱动程序。
$ npm init -y
$ npm install mongodb --save
创建一个能够编写实际的 Node.js 文件的文件。
$ touch index.js
请在创建了index.js文件之后,将以下代码写入index.js中。
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
/* 接続先URL */
const url = 'mongodb://localhost:27017';
/* データベース名 */
const dbName = 'myMongo';
/* データベース接続 */
MongoClient.connect(url, (err, client) => {
/* Errorがあれば処理を中断 */
assert.equal(null, err);
/* 接続に成功すればコンソールに表示 */
console.log('Connected successfully to server');
/** DBを取得 */
const db = client.db(dbName);
/* DBとの接続切断 */
client.close();
});
让我们运行这个文件。
$ node index.js
(node:72067) DeprecationWarning: current Server Discovery and Monitoring engine is deprecated,
and will be removed in a future version. To use the new Server Discover and Monitoring engine,
pass option { useUnifiedTopology: true } to the MongoClient constructor.
Connected successfully to server
哎呀!
我去!!
我得到了一个异常长的错误信息。
我得到了一个异常长的错误信息。
要求将{ useUnifiedTopology: true }作为MongoClient的选项传递。让我们将index.js更改为以下内容。
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
/* 接続先URL */
const url = 'mongodb://localhost:27017';
/* データベース名 */
const dbName = 'myMongo';
/**
* 追加オプション
* MongoClient用オプション設定
*/
const connectOption = {
useNewUrlParser: true,
useUnifiedTopology: true,
}
/**
* データベース接続
* データベース接続用の引数追加
*/
MongoClient.connect(url, connectOption, (err, client) => {
/* Errorがあれば処理を中断 */
assert.equal(null, err);
/* 接続に成功すればコンソールに表示 */
console.log('Connected successfully to server');
/** DBを取得 */
const db = client.db(dbName);
/* DBとの接続切断 */
client.close();
});
请注意在`MongoClient.connect(url, connectOption, (err, client))`中第二个参数`connectOption`被传递了。
来吧,让我们再试一次。
$ node index.js
Connected successfully to server
一切无问题,成功连接到了MongoDB。
下次我們將使用這個方法,以更深入地實現不可或缺的CURD操作於數據庫中。
那就这样吧!
愉快地进行黑客行动!
请参考在 macOS 上安装 MongoDB 社区版
MongoDB 快速入门