express 和mongodb 的开发后台

express是node.js的一个框架 在他的基础之上还有一个koa 框架;

mongodb是一个非关系型数据库;

这次要做的是使用 node.js的mongoose模块 来链接 和操作mongodb;


安装 express

npm i express --save

根目录创建server文件夹,放置后台文件---》在文件夹内创建 server.js;

在 文件内 书写 :

const express= require("express");  //引入express
const app=express();                 // 调用express生成方法
app.get("/",function (req,res) {
    res.send("<h1>hello world</h1>")         //app.get的send方法,输出一段文本;访问 的是 :“/” 根目录
})
app.get("/data",function (req,res) {
    res.json({"name":"json"})                // app.get 的 json方法 ,输出json数组  访问的是 :“/data” data目录
})

app.listen(9093,function () {
    console.log("node start")            // app.listen 方法  监听 9093 端口 
})

以上的的代码 cd到server 文件夹 然后  在 输入node server.js   回车

这样就会执行这段node代码 

首先执行  listen 的语句 在下方能看到 listen方法里的打印的东西 ,

然后在浏览器访问 localhost:9093 就可以得到输出的一个html标签---helloworld

                         localhost:9093/data  得到一个json字符串  {"name","json"} 一般这种用法会比较常见 ;

 这样的输出 每次更改 都需要ctrl+c停掉 ,然后重新 node server.js  来重新启动;

 我们可以选择全局安装一个 辅助的热更新的工具  

npm i -g nodemon 

我发现 mac在全局安装的时候 需要输入密码,否则没权限报错; 局部安装好像是不用输入密码的;

那么就是sudo npm i -g nodemon  ,就这样  输入密码完成安装;

然后 nodemon server.js 执行 命令 热更新;



 mongodb的安装 

window 安装 比较简单 

linix 安装不会

仅仅说下 mac的安装

首先 你的去安装mac的包管理工具---- brew (酿);我这边下载的是homebrew(感谢王总的赞助帮我装上了);

然后 底下输入命令 brew install mongodb

 等  homebrew 自己更下一下  就可以正常下载了

 然后输入 mongod --config /usr/local/etc/mongod.conf 执行就可以跑起来了

新开一个任务窗口 ,然后输入mongo

可以得到下面的信息

MongoDB shell version v3.6.5
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.5
Server has startup warnings: 
2018-06-12T15:34:39.440+0800 I CONTROL  [initandlisten] 
2018-06-12T15:34:39.440+0800 I CONTROL  [initandlisten] ** WARNING: Access control is not enabled for the database.
2018-06-12T15:34:39.441+0800 I CONTROL  [initandlisten] **          Read and write access to data and configuration is unrestricted.
2018-06-12T15:34:39.441+0800 I CONTROL  [initandlisten] 

这样就算是启动成功;

第二行url 就是mongodb的输出的端口;

然后就利用 mongoose 来把node和 mongodb的连接起来

安装 mongoose

 npm i mongoose --save 

安装成功后打开 server.js来修改

const express= require("express");
const mongoose=require('mongoose'); //引入mongoose 工具
const DB_URL="mongodb://127.0.0.1:27017"; // 拿到 mongodb的输出端口

mongoose.connect(DB_URL);   //使用mongoose链接到 mongodb的端口
mongoose.connection.on("connected",function () {
    console.log("connect successful");    //链接成功以后输出  字符串   
})

const app=express();
app.get("/",function (req,res) {
    res.send("<h1>hello world</h1>")
})
app.get("/data",function (req,res) {
    res.json({"name":"json"})
})

app.listen(9093,function () {
    console.log("node start")
})

这样进入目录下启动 nodemon server.js 就会输出 链接成功的字符串 ;

定义mongodb的文档模型

Schema 和model

const express= require("express");
const mongoose=require('mongoose');
const DB_URL="mongodb://127.0.0.1:27017";

mongoose.connect(DB_URL);
mongoose.connection.on("connected",function () {
    console.log("connect successful");
})
//mongodb 里有文档,字段的概念
const User=mongoose.model("user",new mongoose.Schema({
    user:{type:String,require:true},
    age:{type:Number,require:true}
})
)


const app=express();
app.get("/",function (req,res) {
    res.send("<h1>hello world</h1>")
})
app.get("/data",function (req,res) {
    res.json({"name":"json"})
})

app.listen(9093,function () {
    console.log("node start")
})






mongodb 里有文档和字段的概念

利用 mongoose的

增 create 

删 remove

改 update

查 Find和findOne

首先来尝试新增数据

//新增数据
User.create({name:"xiaoming",age:18},function (err,doc) {
    if(!err){
        console.log(doc)
    }else{
        console.log(err);
    }
})

node里的异步操作回调函数的参数一般的都是(err,doc)

第一个参数是错误信息;第二个就是正常输出了;

如果创建成功会看到控制台 打印

{ _id: 5b1f842859321604ac198892,
  user: 'xiaoming',
  age: 18,

  __v: 0 }

然后执行查的操作

上面执行增加的代码先注掉;

然后在/data代码里操作

app.get("/data",function (req,res) {
   User.find({},function (err,doc) {
       res.json(doc);
   })
})

第一个参数空对象 ,就是查全部的操作;

然后json格式输出;得到

[{"_id":"5b1f82720de0de04a2c5c680","age":18,"__v":0},
{"_id":"5b1f842859321604ac198892","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84a446aa8e04b0929e90","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84da96a5ea04b4cc1337","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84e725e6b504b7757326","user":"xiaoming","age":18,"__v":0},{"_id":"5b1f84f7d7982504ba25b055","user":"xiaoming","age":18,"__v":0}]

执行删除的操作

把age=18的全部删除

//删除数据
User.remove({age:18},function (err,doc) {
    console.log(doc)
})
第一个参数 是过滤对象

成功以后 会看到

{ n: 6, ok: 1 }

说明删除掉6条数据;;;;;

再插入两条数据方便进行改的操作;

//修改数据
User.update({user:"xiaoming"},{$set:{age:30}},function (err,doc) {
    console.log(doc);
})

第一个参数 是过滤对象    ,第二个参数的$set:{}里就是要设置的属性;

返回{ n: 1, nModified: 1, ok: 1 }说明修改成功;


最后补充一下查的操作

app.get("/data",function (req,res) {
   User.find({user:“xiaoming”},function (err,doc) {
       res.json(doc);
   })
})
在finde的过滤对象里 写入
user:“xiaoming”

然后输出就只剩下小明的的数据了

还有一个findOne 如果有多条数据 那么查找到一条就返回,;只是一个对象,不是find的数组;

猜你喜欢

转载自blog.csdn.net/wangrong111222/article/details/80664823
今日推荐