express中用mongoose操作mongodb数据库(二)

MongoDB:是一种面向文档的数据库管理系统,由C++撰写而成。面向文档(Document-Oriented)的存储。JSON风格的文档还可以定义动态的模式(Schema),提供了很大程度的自由

mongoose:是mongoDB的一个对象模型工具,是基于node-mongodb-native开发的mongoDB的nodejs驱动,可以在异步的环境下执行。同时它也是针对mongoDB操作的一个对象模型库,封装了mongoDB对文档的一些增删改查等常用方法,让nodejs操作mongoDB数据库变得更加容易。

第一步:

项目下安装mongoose:cnpm i --save mongoose@4,表示安装4.x版本,然后在js文件中引入并声明:var mongoose = require("mongoose");

第二步:

链接数据库,默认端口是27017,第二个参数表示兼容老版本mongo,链接同时也要开启mongodb服务才行,第三个参数是回调函数,函数第一个参数是错误对象,有错误就存在这个对象:

//将当前全局对象下的Promise赋值给mongoose.promise
mongoose.Promise = global.Promise;
//链接mongodb数据库,第二个参数表示兼容老版本mongo
mongoose.connect("mongodb://localhost:27017/1710mongo", {useMongoClient: true}, function(err){
	if(!err){			//此处这个函数的第一个参数是mongoose库提供的一个内置的错误对象
		console.log("连接成功")
	}else{
		console.log("连接失败")
	}
});



数据库连接成功后,处理前端请求,操作数据库(存储数据):

a.创建Schema文件 (一种以文件形式存储数据库模型骨架,建立一个映射,与数据库集合属性对应的映射。意思就是当前数据库这个集合中有哪些字段,要提前在mongoose中声明,相当于提前告诉mongoose应该操作哪些字段,这个操作就叫schema),这里我创建文件名为schemas,在这个文件夹中创建一个js文件,命名一般跟数据信息有关为好:

var mongoose = require("mongoose");
var userSchemas = mongoose.Schema({//声明这个集合并添加所用字段
	username: String,
	pwd: String
})
module.exports = userSchemas;

这个schema文件只是表示了该集合有哪些字段,不具备任何操作数据库的能力;

b.创建model文件 (相当于读取schema文件实现mongoose的CRUD),这里我创建文件夹名为models,再在该文件夹中创建一个js文件,命名最好跟schema文件名对应一样:

var mongoose = require("mongoose");
var userSchemas = require("../schemas/user");//加载刚定义好的schema
var user = mongoose.model("users", userSchemas);//第一个参数定义该集合名称,第二个schema
module.exports = user;

c.在main.js中加载model模块(刚创建的user.js),每一个model都是一个文档的构造类,在mainjs中加载后可以直接实例化一个model的对象(实例化的同时传入前端请求的数据对象res.body),这个对象就拥有了操作数据库的方法,下面演示往数据库存储:

var User = require("./models/user");//导入model
//处理注册(增加)
app.post("/regist", function(req, res){
	console.log(req.body);
	let {name: username, pwd} = req.body;//解构赋值(username=name)
	//判断用户是否已存在,存在提示用户登录(调用model的find()方法)
	User.find({name: username}, function(err, doc){//doc查到的数据
		if(err){return};
		if(doc.length){
			res.json({
				code: 1,
				msg: "用户名已存在"
			})
		}else{
			//操作数据库,存储数据
			var user = new User({//实例化mongo数据库文档的model
				name: username,
				pwd
			});
			user.save(function(err, doc){//第一个参数为错误对象,第二个为当前存储的对象
				if(err){return};
				res.json({//没有错误就返回数据给前端
					code: 0,
					msg: "注册成功"
				})
			})
		}
	})
})




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node.js是一个基于Chrome V8 JavaScript引擎的JavaScript运行环境,可用于服务器端编程。Express是一个基于Node.js平台的Web应用开发框架,提供了简单易用的API,可以快速构建Web应用程序。Mongoose是一个优秀的Node.js模块,用于连接MongoDB数据库,并提供了丰富的API来操作MongoDB数据库。 下面是使用Node.js、ExpressMongoose操作MongoDB的基本流程: 1. 安装Node.js、ExpressMongoose 在终端中执行以下命令: ``` npm install node npm install express npm install mongoose ``` 2. 连接MongoDB数据库 在app.js或server.js文件中,使用Mongoose连接MongoDB数据库: ``` var mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/test'); ``` 3. 定义数据模型 在models目录下创建一个JavaScript文件,使用Mongoose定义数据模型: ``` var mongoose = require('mongoose'); var Schema = mongoose.Schema; var UserSchema = new Schema({ name: String, age: Number, email: String }); module.exports = mongoose.model('User', UserSchema); ``` 4. 实现API接口 在routes目录下创建一个JavaScript文件,实现API接口: ``` var express = require('express'); var router = express.Router(); var User = require('../models/user'); router.get('/users', function(req, res, next) { User.find(function(err, users) { if (err) return next(err); res.json(users); }); }); router.post('/users', function(req, res, next) { var user = new User(req.body); user.save(function(err) { if (err) return next(err); res.json(user); }); }); router.get('/users/:id', function(req, res, next) { User.findById(req.params.id, function(err, user) { if (err) return next(err); res.json(user); }); }); router.put('/users/:id', function(req, res, next) { User.findByIdAndUpdate(req.params.id, req.body, function(err, user) { if (err) return next(err); res.json(user); }); }); router.delete('/users/:id', function(req, res, next) { User.findByIdAndRemove(req.params.id, function(err, user) { if (err) return next(err); res.json(user); }); }); module.exports = router; ``` 5. 启动Express应用 在app.js或server.js文件中启动Express应用: ``` var express = require('express'); var app = express(); var bodyParser = require('body-parser'); var userRoute = require('./routes/user'); app.use(bodyParser.json()); app.use('/api', userRoute); app.listen(3000, function() { console.log('Server listening on port 3000'); }); ``` 6. 测试API接口 通过Postman等工具测试API接口。例如: - GET http://localhost:3000/api/users - POST http://localhost:3000/api/users - GET http://localhost:3000/api/users/5f3e7003c3e1c12345678901 - PUT http://localhost:3000/api/users/5f3e7003c3e1c12345678901 - DELETE http://localhost:3000/api/users/5f3e7003c3e1c12345678901 这样就完成了使用Node.js、ExpressMongoose操作MongoDB的基本流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值