node和mongoDB

js运行在服务器

node -v  看版本
let http = require("http");
let server = http.createServer(function(req, res){
   res.end("hello");
});
server.listen(3000);

node js文件运行该文件,作为服务器占用3000端口
end只执行一次,里面可以写html标签
write(String) 可以执行多次,他后面必须有end方法,也可以写标签

读取模块

let http = require("http");
var fs=require("fs");
let server = http.createServer(function(req, res){
   res.setHeader("Content-Type", "text/html;charset=UTF8");
  fs.readFile("./cece.txt",function(err, data){
     res.end(data);
  })
});
server.listen(3000);
 if (req.url="/?/?"){
         顶层路由,根据请求的url路径来指定返回的内容
        res.end(data);  
     }

顶层路由的问题,请求的路径和实际物理路径不匹配,导致每一个文件都要单独配置

nodejs没window所以有作用域隔离
通过
01.js

let two=require("./02.js");
console.log(two.number)

02.js

let a=100;
exports.number=a;

来访问

构造函数

01.js

function Person(name,age){
    this.name = name;
    this.age = age;
}
module.exports = Person;

02.js

let person=require("./02.js");
let xiaomign=new person("xiaoming",12);
console.log(xiaomign.name)

require引入文件,不加./引入的node_modules中的文件

用法

npm init 初始化给自己做一个身份证
以后只用在package.json目录下npm install就可以检索内部依赖进行安装
当然,安装要加--save

淘宝镜像

npm install -g cnpm --registry=https://registry.npmmirror.com     //cnmp下载

express

npm install --save express
let express = require("express");
let app = new express();
app.get('/', function(req, res){
    res.send("Hello, world!");
});
app.listen(3000)

原生路径不允许挂参数
node和mongoDB
冒号就是通配,可以通过params得到参数
node和mongoDB
匹配成功路径默认不会走其他的中间件,用next()方法可以方法可以放行。send同等于end,直接返回

express的jsonp封裝

node和mongoDB
node和mongoDB

res.send(`jsp({name:"xaioming",age:12})`)           原版,模板字符串
靜态化
app.use("pub",express.static("public"));

將public文件当做根路径,请求地址localhost:300/pub/?
?是public文件夹里面的文件,第一个pub参数可以不写
最主要的是请求文件,比如图片等不会再当成路径去解析

restful

非restful通过url地址来区分,restful风格路由通过请求方式区分
node和mongoDB
node没静态化的话,统一使用绝对路径

let fs = require("fs");
let path = require("path");
fs.readFile(path.resolve(__dirname,"./other/cece.txt"),function(err,data){
    console.log(data.toString());
});

用path模块合并路径

MongoDB

非关系型数据库(不限制数据类型)

数据库,集合,文档
show dbs //查看所有的数据库
show collections //查看所有的集合

use ??      创建并使用数据库
db.集合.insert(数据)    //创建集合并插入数据
db.student.find();   //查找所有student集合的数据
db.student.find({age:{$gt:10}});      //查找相关数据
db.student.find($or:[{},{}])

db.dropDatabase();

cmd两个窗口,一个mopngoed,另一个mongo,然后use库,最后调函数删除,idea删除不了

mongoose

以面向对象的方式操作数据库

let mongoose = require("mongoose");
mongoose.connect("mongodb://localhost/students");   最后一个数据库名称,可以不存在
var Schema = mongoose.Schema;
var stuSchema = new Schema({             创建schema类型的约束
    name:String, 
    age:Number,
    address:{
        type:String,
        default:"this"
    }
});
var stuModel = mongoose.model("students",stuSchema);    传入集合名称和schema约束
stuModel.create({
    name:"xiaoming",
    age:12,
    address:"shandong"
},function (err) {
 if (err){
     console.error("falses")
 }
})

查询

stuModel.find({name:"xiaoming"},function (err,docs) {   //返回数组
        alert(docs[0].name);
});
stuModel.findone({name:"xiaoming"},function (err,doc){       //返回对象
    alert(doc.name);
})

修改

stuModel.updateOne({name:"xiaoming"},{$set:{age:20}},
function (err,doc) {

});
stuModel.updateMany({name:"xiaoming"}
,{$set:{name:"xiaozhang"}},function (err,docs){
    console.log(docs[0])
})

删除

stuModel.deleteOne({name:"xiaoming"},function (err,doc) {

});
stuModel.deleteMany({name:"xiaozhang"},function (err,docs){

})
Echart

基于js的图标库

上一篇:关于Img标签绑定:src不显示图片


下一篇:[PHP] 解决composer install 时require php >7.4