Node.js数据库开发干货总结(包含MongoDB和MySQL)

1 Node.js简介

Node.js是一个Javascript运行环境,简单的说 Node.js 就是运行在服务端的 JavaScript。实质是对Chrome V8引擎进行了封装。

V8引擎执行Javascript的速度非常快,性能非常好。Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行数据密集型的实时应用。

 

2 Node.js数据库开发

本文包含了关系型数据库代表:MySQL非关系型数据库代表:MongoDB在Node.js上的操作

MongoDB中:

  • 文档:最小数据单位(类似于关系数据库中的行),由多个键值对组成
  • 集合:一组文档组成一个集合,(集合类似关系数据库中的表),一个集合中的文档可以是各种各样的
  • 数据库:一组集合组成一个数据库

首先,放一张本人整理的思维导图,便于大家了解整体内容:

Node.js数据库开发​​​​​​

 

2.1 用mongoose连接MongoDB(更简单)

   mongoose中的一切由schema开始,它是一种以文件形式存储的数据库模型骨架,它定义了model中的所有属性

  • 连接MongoDB

   先安装模块:

npm install mongoose

   然后连接MongoDB:

const mongoose =require('mongoose '); 
const url = 'mongodb://localhost/database';
mongoose.connect(url,function(err){
    ...
});

//注:完整url为'mongodb://user:pass@localhost:port/database'
  • 操作MongoDB

   1.mongoose插入

//mongoose插入
mongoose.connect(uri,function(err){...}));

//实例化一个ArticleSchema
const ArticleSchema = new mongoose.Schema({
	title: String,
    author: String,
    time: Date
});

//注册一个model
mongoose.model('Article',ArticleSchema)

//将文档插入集合
const Article = mongoose.model('Article');
var art = new Article({
	title:'node.js',
    author:'node',
    time: new Date()
})

art.save(function(err){
	...
})

  2.mongoose查询

  mongoose查询有两种方式,分别为:控制台查询和正常查询

  控制台查询:

//mongoose查询
**1.控制台查询**
**切换至article数据库**
use article

**查看article数据库所有collection**
show collections

**查看名为articles的collection中的所有文档**
db.articles.find()

**返回查询到的第一条数据**
db.articles.findOne()

  正常查询:

Article.find({},function(err, docs){
    ...
});

  3.mongoose修改

//mongoose中可以直接在查询记录后修改记录的值,修改后直接调用保存即可
const Article = mongoose.model('Article');

//查询数据
Article.find({title:'node.js'},function(err, docs){
//修改数据
    docs[0].title = 'javascript';
//保存修改后的数据
    docs[0].save();
}); 

  4. mongoose删除

//mongoose删除
//查询数据
Article.find({title:'node.js'},function(err, docs){
//返回的是一个符合查询条件的所有文档组成的数组,逐个删除文档
	if(docs){
    docs.forEach(function(ele){ele.remove();})
    }
}); 

 

2.2 用node-mongodb-native连接MongoDB

   注意:用 node-mongodb-native需要注意的是每次操作完 MongoDB都应该调用 close方法关闭 MongoDB

  •   连接MongoDB

   先安装模块:

npm install mongodb

  然后连接MongoDB:

//连接MongoDB
var MongoClient =require('mongodb').MongoClient; 
const url = 'mongodb://localhost:27017/database';
MongoClient.connect(url,function(err){
	...
});

//注:完整url为'mongodb://user:pass@localhost:port/database'
  •   操作MongoDB

   1.node-mongodb-native插入

      步骤:打开数据库->打开集合->插入数据->关闭数据库

  • find()   一次查询多条
  • insertMany()   一次插入多条,参数是数组格式   
collection.insertMany([stu1,stu2,stu3],function(err,doc){

});

    查询时需要转化为数组:

collection.find().toArray(function(err, docs){

});

   2.node-mongodb-native查询
   步骤:打开数据库->打开集合->查找文档->关闭数据库

collection.findOne({},function(err,doc){

});

 3.node-mongodb-native修改

collection.updateOne({name:'jack'},{$set:{name:'rose'}},function(err,doc){

});

4.node-mongodb-native删除

collection.deleteOne({name:'jack'},function(err,doc){

});

 

2.3 连接MySQL

先安装模块:

npm install mysql

然后连接MySQL: 

//连接MySQL
const mysql =require('mysql'); 

//创建连接
const collection = mysql.createConnection({
	host: 'localhost',
    user: 'root',
    password: 'secret'
});

//连接mysql
connection.connect(function(err){
	...
});

  终止连接:

//第1种方法
connection.end(function(err){
    ...
});

//第2种方法
connection.destroy();
//注:该方法也可以终止连接,会立即终止底层套接字,不会触发更多的事件和回调函数
  • 操作MongoDB

   1.MySQL插入
      步骤:打开数据库->打开集合->插入数据->关闭数据库

//1.insertMany()  一次插入多条,参数是数组格式   
collection.insertMany([stu1,stu2,stu3],function(err,doc){});

//2.find()   一次查询多条

   查询时需要转化为数组:

collection.find().toArray(function(err, docs){});

  2.MySQL删除修改查询

     步骤:创建连接->连接mysql->query()执行SQL语句来操作数据
     例如:查询数据,data是表名,rows是查询后返回的记录

  • 无参数查询:
connection.query('SELECT * FROM data', function(err, rows){

});
  • 有参数查询。query的第二个参数是可选参数,"?"代表占位符
const table = 'student';
connection.query('SELECT * FROM ?', [table],function(err, rows){
    
});

注:可使用 escape()方法防止SQL注入攻击(黑客提交给服务器中的数据中带有SQL语句),假设 userid是用户提供的数据

let sql = 'SELECT * FROM user WHERE userid=' + connection.escape(userid);


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于数据库操作,Node.js 有许多可选的模块和库可以使用。一种常见的选择是使用 `mysql`、`mongodb` 或 `sequelize` 模块来连接和操作数据库。这些模块提供了简单的接口来执行查询、插入、更新和删除等操作。 例如,如果你使用MySQL数据库,你可以使用 `mysql` 模块来连接到数据库并执行查询。以下是一个简单的示例: ```javascript const mysql = require('mysql'); // 创建数据库连接 const connection = mysql.createConnection({ host: 'localhost', user: 'username', password: 'password', database: 'database_name' }); // 连接到数据库 connection.connect((err) => { if (err) throw err; console.log('Connected to the database!'); }); // 执行查询 connection.query('SELECT * FROM tablename', (err, results) => { if (err) throw err; console.log(results); }); // 关闭连接 connection.end(); ``` 关于表单验证,Node.js 有许多库可以帮助你处理表单数据的验证和验证错误的处理。一些 popular 的表单验证库包括 `express-validator` 和 `joi`。 使用 `express-validator` 的示例代码如下: ```javascript const { body, validationResult } = require('express-validator'); const express = require('express'); const app = express(); // 定义一个路由处理程序 app.post('/create', [ // 对表单字段进行验证 body('username').notEmpty().withMessage('Username is required'), body('email').isEmail().withMessage('Invalid email'), body('password').isLength({ min: 6 }).withMessage('Password must be at least 6 characters long'), ], (req, res) => { // 检查验证错误 const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } // 处理表单数据 // ... // 返回成功的响应 res.json({ message: 'Form submitted successfully' }); }); app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 以上是一些基本的示例代码,你可以根据自己的需求和数据库选择进行修改和扩展。希望能对你有所帮助!如果有更多问题,请随时提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangjun0708

你的打赏将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值