nodejs连接mongodb
首先我们先去 mongodb官网 注册一个账号,然后申请一个免费的服务器,直接用qq邮箱注册即可。
1.填写相对应的注册信息,然后去qq邮箱确认下。
2.选择服务器,这边我们选择 FREE 就可以了,毕竟自己学习的话(521M)已经够用了。然后我们点击 Create,进行下步操作。

3. 选择服务器,建议选择香港、台湾的服务器。点击Create Cluster,创建服务器。

4. 接下来会跳转到这个页面,记得左边选择Databases ,这样就可以看到我们创建的服务器了(这里中间文字提示服务器会在1-3分钟创建完成)。
如果想创建新的服务器可以点击右边的Create,但是新的服务器就需要花钱了。
等待几分钟后就可以看到我们自己创建的服务器了。然后我们点击Connect,会出现选择连接的弹框。

5. 点击Connect your appliction 就可以看到用nodejs 连接服务器的例子。
点击 connect using MongoDB Compass , 可以看到使用 MongoDB Compass连接服务器的密钥,密码是自己账号的密码,记得把 '<password>' 替换成自己的密码。



6. 没有 MongoDB Compass ,先去下载 MongoDB Compass。可以在上一张图中选择 I do not have MongoDB Compass ,那么就会提供下载链接,根据自己的系统选择对应的安装包。
然后打开 MongoDB Compass 在下方输入密钥,点击Connect 即可接连到我们的服务器,并且可以对服务器中的数据库进行操作。

我们开始使用nodejs连接到数据库,并进行一些简单的操作。这里使用的是 mongoose 进行数据库操作。
1.连接数据库,在node环境下运行,控制台输出 connect success 就表示数据库连接成功了。需要注意的是,如果我们的数据
const mongoose = require('mongoose');
// 数据库名称
const dbName = 'nodeStudy'
// 连接服务器的链接 把链接换成自己的服务器链接就可以了。
const uri = `mongodb+srv://lvkeming:<password>@cluster0.qkwmi.mongodb.net/${dbName}?retryWrites=true&w=majority`;
mongoose.connect(uri, (err) => {
if (err) {
console.log(err);
return
}
console.log('connect success');
});
2.一些简单的增删改查
const mongoose = require('mongoose');
const dbName = 'nodeStudy'
const uri = `mongodb+srv://lvkeming:<password>@cluster0.qkwmi.mongodb.net/${dbName}?retryWrites=true&w=majority`;
mongoose.connect(uri, (err) => {
if (err) {
console.log(err);
return
}
console.log('connect success');
});
/**
* 数据校验
* required 表示这个数据必须传入
* max 最大值
* min 最小值
* enum 枚举类型,要求数据必须满足枚举值
* match 增加的数据必须符合 match(正则)的规则
* maxlength 最大长度
* minlength 最小长度
* validate 自定义校验,返回bool类型
*/
// 这边定义了 nodeStudy 里面user表里面的字段类型,以及一些数据校验
const UserSchema = new mongoose.Schema({
username: {
type: String,
unique: true
},
password: String,
name: String,
age: Number,
sex: String,
tel: Number,
status: {
// 如果不传status 那么status默认值为1
type: Number,
default: 1
}
});
// 这边第三个参数 才是和具体的表对应,这里连接到了 user 这个表
const UserModel = mongoose.model('User', UserSchema, 'user');
// 查询数据,第一个参数是查询的条件
// 第二个参数是一个回调函数,返回 err错误信息 和 data查询的结果
// 该语句查询 username 为 lisi 的用户
UserModel.find(
{ "username": "lisi" },
(err, data) => {
if (err) throw err
console.log(data);
}
)
// 增加数据
let addUser = UserModel({
username: 'lisi11',
password: '12345678',
name: '李四',
age: 34,
sex: '男',
tel: 10086344567
})
addUser.save((err, res) => {
if (err) throw err
console.log(res);
})
// 删除数据 第一个参数是查询的条件
// 第二个参数是一个回调函数,返回 err错误信息 和 res删除结果
UserModel.deleteOne(
{ 'username': 'lisi11' },
(err, res) => {
if (err) throw err
console.log(res);
}
)
// 更新数据 第一个参数是查询的条件 。
// 第二个参数是更新的数据,更新数据是合并更新。
// 第三个参数是一个回调函数,返回 err错误信息 和 res未更新的数据
UserModel.updateOne(
{ 'username': 'lisi11' },
{ 'age': 45 },
(err, res) => {
if (err) throw err
console.log(res);
}
)

浙公网安备 33010602011771号