使用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

如果在输入命令后什么都没有发生时,请从以下内容安装。
在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

使用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 快速入门

bannerAds