nodejs学习-4:nodejs连接mongodb和相关操作
Posted 坚持不懈的大白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nodejs学习-4:nodejs连接mongodb和相关操作相关的知识,希望对你有一定的参考价值。
1. express生成器生成express模板
前提需要首先下载好:express-generator,命令如下(全局安装)
npm install -g express-generator
生成模板命令如下:
express 项目名称 --view=ejs
// --view 参数表示前端界面使用的引擎,这里使用ejs
这只是一个模板,模板下需要模块还需要重新下载,为此,需要用cd命令来到当前项目的目录下,输入命令:npm i 下载好相关模块。
2. 连接mongodb数据库
首先,前提是先下载好mongodb数据库,用nodejs连接mongodb数据库需要下载好一个模块。
首先,命令窗口下来到当前项目的目录,输入如下命令即可。
npm i mongoose
在当前项目的目录下新建config文件夹,表示这个文件夹下的文件为项目的相关配置文件。
这里db.config.js文件为mongodb连接配置文件,db.config.js里的代码如下:
const mongoose = require('mongoose');
mongoose.connect('mongodb://127.0.0.1:27017/liuzeTest');
// 连接mongodb数据库 liueTest 表示在mongodb数据库中新建liuzeTest数据库
之后打开bin文件下的www文件,加入如下代码,表示引入数据模块。
// 引入数据库模块
require('../config/db.config')
3. 启动服务器,实现mongodb的增删改查
在当前项目目录下,输入命令:npm start,这样项目就启动了,但是代码一改动,就又得输入这个命令,为了避免这样重复的操作,可以修改当前项目下package.json文件,修改如下:
或者这样也可以:
"scripts":
"start": "nodemon ./bin/www"
,
前提是需要下载好node-dev和nodemon。
操作mongodb数据库另外需要提前构建好相应的模型,为了新建文件夹model(图片上小编写错了),在这个文件夹下构建相应的js模型文件即可。
写了一个简单的注册、修改、删除、查询代码(不符合项目的业务逻辑,只是为了演示操作而已)
3.1. 增加
后端js代码:
router.post('/user/add',(req,res)=>
console.log(req.body);
const username,password = req.body;
userModel.create(
username,password
).then((data)=>
console.log(data);
);
res.send(
ok:1
);
)
前端请求代码如下:
postBtn.onclick = ()=>
fetch('/api/user/add',
method:'post',
body:JSON.stringify(
username:username.value,
password:password.value
),
headers:
'Content-Type':'application/json'
).then((res)=>
return res.json();
).then((res)=>
console.log(res);
)
// 注册按钮点击
运行结果:
3.2 修改
后端js代码(根据_id值进行修改):
router.post('/user/update/:id', (req, res) =>
console.log(req.body,req.params.id);
const
username,
password
= req.body;
userModel.updateOne(
_id:req.params.id,
username,password
).then((data)=>
res.send(
ok: 1
);
);
)
前端请求代码如下:
updateBtn.onclick = ()=>
fetch('/api/user/update/63f188370691942759591324',
method:'post',
body:JSON.stringify(
username:username.value,
password:password.value
),
headers:
"Content-Type":'application/json'
).then((res)=>
return res.json();
).then((res)=>
console.log(res);
)
// 更新按钮点击
运行结果:
3.3 删除
后端js代码(根据_id值进行删除):
router.get('/user/del/:id', (req, res) =>
userModel.deleteOne(
_id:req.params.id
).then(function(data)
res.send(
ok:1
);
)
)
前端请求代码如下:
delBtn.onclick = function()
fetch('/api/user/del/63f188370691942759591324')
.then(res=>res.json())
.then(res=>
console.log(res);
)
// 删除按钮点击
3.4 查询
后端js代码:
router.get('/user/list',(req,res)=>
userModel.find(,['username']).then(data=>
res.send(data);
)
/*userModel.find(, ['username']).sort(age:-1).skip().limit().then(data =>
res.send(data);
)
根据年龄进行排序 当前为降序
skip(0) limit(10) 同[0:10]
*/
)
前端请求代码如下:
fetch('/api/user/list')
.then(res=>res.json())
.then(res=>
let str_s = '';
res.forEach(ele=>
str_s += `
<tr>
<td>$ele._id</td>
<td>$ele.username</td>
</tr>
`;
)
tbody_.innerhtml = str_s;
)
userModel.find()
// find() 参数没有表示查询所有数据
// find(,['username']) // 表示只查询username这个字段的所有数据信息
.sort()
/*
排序
如参数为age:1 表示按照年龄升序排序
age:-1 表示按照年龄降序排序
*/
.skip() .limit()
/*
用于分页查询使用,两个函数应该一起使用,类似切片操作
.skip(0).limit(10) 好比python中 list2[0:10]
.skip(10).limit(20) 好比python中 list2[10:20]
list2表示一个列表
*/
以上是关于nodejs学习-4:nodejs连接mongodb和相关操作的主要内容,如果未能解决你的问题,请参考以下文章
物联网服务NodeJs-5天学习第四天存储篇③ ——基于物联网的WiFi自动打卡考勤系统,升级存储为mysql,提醒功能改为QQ
如何使 SQLite 与 Angular 4+、Electron 和 NodeJS 一起工作