目录效果初始化model 下创建index.js用于连接数据库时的信息修改app.js文件里的信息router下修改user.js文件创建上传文件保存文件夹在public下新建一个i
const mongo=require("mongoose");
const userSchema=new mongo.Schema({
username:String,
passWord:String,
gender:String,
tel:String,
avatarUrl:String
})
const userModel=mongo.model('runoob',userSchema,'users')
module.exports=userModel
var createError = require('Http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// 连接数据库
const mongoose = require('mongoose'); // 引入 mongoose,用于连接数据库
mongoose.connect('mongoDB://localhost:27017/runoob'); // 连接数据库
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//挂载路由
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
这里是处理客户端请求的核心,遵循REST架构风格
查找
增加
修改
删除
var express = require('express');
const db=require('../model/index')
const formidable=require('formidable')
const path=require('path')
var router = express.Router();
const bcrypt=require('bcryptjs')
//
//查找
router.get('/:_id?',(req,res)=>{
const {_id}=req.params;
if(_id){
console.log(_id);
db
// .findOne({_id:'6274ee9d620974ebd2122df8'})
// .find({_id:_id})
.findById(_id)
.then(data=>{
res.json({
code:200,
status:1,
data,
})
})
}else {
db
.find()
.then(data=>{
res.json({
code:200,
status:0,
data
})
})
}
})
//增加
router.post('/api/upload',(req,res,next)=>{
const form=formidable({
multiples: true,
uploadDir: path.join(__dirname, '../static/upload'),
keepExtensions: true,
})
form.parse(req,(err,fields, files)=>{
if(err) {
next(err);
return;
}
const {name,password,gender,tel}=fields;
const avatarUrl="/upload/"+ files.avatar.newFilename;//文件夹,包含上传文件
if(!name || !password){
res.json({
code:200,
status:1,
message:"用户名或密码不能为空"
})
}else {
db.findOne({username:name}).then(data=>{
if(data==null){
const hash=bcrypt.hashSync(password,10)
new db({username:name,password:hash,gender,tel,avatarUrl})
.save()
.then(data=>{
res.json({
code:200,
status:0,
message:data
})
})
}else {
res.json({
code:200,
status:1,
message:"用户名已存在"
})
}
})
}
})
})
//修改
router.put('/:_id',(req,res)=>{
const _id=req.params;
const {username,password,gender,tel,avatarUrl}=req.body;
db
.updateOne({_id},{username,password,gender,tel,avatarUrl})
.then((data)=>{
res.json({
code:200,
status:0,
message:"修改成功"
})
})
})
//删除
router.delete('/:_id',(req,res)=>{
const _id=req.params;
db.deleteOne({_id}).then((data)=>{
res.send({
code:200,
status:0,
message:"删除成功"
})
})
})
module.exports = router;
文件夹mondo-express下新建一个static/upload
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h2>With <code>"express"</code> npm package</h2>
<form action="users/api/upload" enctype="multipart/form-data" method="post">
<div>name: <input type="text" name="name" /></div>
<div>password:<input type="password" name="password"></div>
<div>gender:<input type="text" name="gender"></div>
<div> tel:<input type="text" name="tel"></div>
<div>File: <input type="file" name="avatar" multiple="multiple" /></div>
<input type="submit" value="Upload" />
</form>
</body>
</html>
到此这篇关于node.js连接mongo数据库上传文件的方法步骤的文章就介绍到这了,更多相关Node.js连接mongo上传文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: Node.js连接mongo数据库上传文件的方法步骤
本文链接: https://www.lsjlt.com/news/148321.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-01-12
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
2023-05-20
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0