通过Promise在Node.js中使用Mongodb的备忘录(?)
首先
我创建了这个程序,是因为当我想要在Node.js中操作Mongodb时,希望能更简单、更轻松一些。轻松简单真是太棒了。
前提 – 此条是要求对下述内容进行释义的前提。
・已经完成Node.js的安装
・已经完成Mongodb的安装
・已经完成npm的安装
・正在安装mongodb的Node.js API
环境
・樱花VPS上的Centos7
・node.js版本为v15.11.0
・npm版本为7.6.2
・mongodb版本为v4.4.4
蒙古数据库
我们先创建一个用于操作Mongodb的目录,以便更容易理解。
$mkdir database
$cd database
连接部分 (jiējù bùfen)
首先,创建一个关于与Mongodb连接的文件。
$vim mongo_connect.js
//mongo_connect.js
const MongoClient = require('mongodb').MongoClient
function open(){
let url = 'mongodb://ユーザー名:パスワード@localhost:27017';
const connectOptions = {
useNewUrlParser: true,
useUnifiedTopology: true,
}
return new Promise((resolve,reject)=>{
MongoClient.connect(url,connectOptions,(err,db)=>{
if(err) reject(err);
else resolve(db);
});
});
}
function close(db){
if(db)db.close();
}
let db = {
open:open,
close:close
}
module.exports=db;
如果您创建了用户,则请按照以上方式操作。请设置用户名和密码,并输入正确。如果您想设置认证,请提出。
请务必参考本文末尾所写的内容。
如果您希望将Mongodb用作网站的数据库或任何其他用途,建议您将端口从27017更改。由于本次是用于测试兼容性,所以仍使用默认端口。
查询部分
无论在Mongodb中是否可以称之为查询,总之这就是一个查询。
$vim insertOne.js
//insertOne.js
const zenodb = require('./mongo_connect.js');
function insertOne(object,col){
let database = null;
zenodb.open()
.then((db)=>{
database = db;
const dbName = db.db("自分の使うデータベース名を入力してね!");
return dbName.collection(col);
})
.then((collection)=>{
return collection.insertOne(object);
})
.catch((err)=>{
console.error(err)
})
.finally(()=>{
zenodb.close(database);
})
}
module.exports=insertOne;
我为您准备了一个方法,使用insertOne({数据名称,数据},集合名称)可以执行。我在这里写下这样一句话,是因为参考的Q&A回答者这样写。我查了但是不太明白意思。为了安全起见,我附上了参考的Q&A网站。
请问如何在Node.js中使用Promises与MongoDB?
聚集一些
虽然这次只使用了insertOne方法,但如果还制作其他方法,当然会更方便。不过,如果这样做的话,require这个动作可能会变得相当麻烦!所以,让我们事先创建好集合部分吧。
$vim methods.js
const insertOne = require("./insertOne.js");
let methods = {
insertOne:insertOne,
}
module.exports=methods;
如果能够在methods的地方添加多个查询,那就太方便了。
最后,让我们试试这个程序,只是为了保险起见。
我们将使用之前创建的methods文件。
const insertOne = require("./insertOne.js");
let methods = {
insertOne:insertOne,
}
methods.insertOne({name:"tekitou"},"users");
module.exports=methods;
node methods.js
当你使用mongodb shell登录并且在目标数据库的集合中有数据存在的话,那就可以了。
就这样!
如果有任何问题,请写下来!虽然可能有些东西我也不懂哈哈w