Express
下载express
npm install express --save
然后可以在项目里新建一个server
文件夹专门用来存放后台文件,在server
里新建一个server.js
打开server.js
const express = require('express');
新建一个app
const app = express();
监听端口,成功后回调
app.listen(9093,function(){
console.log('Node app start at port 9093')
})
试试一个最基本的命令,访问根目录,返回一个Hello word
app.get('/',function(req/*请求*/,res/*响应*/){
res.send('<h1>Hello word</h1>')
})
在命令行里执行
node server.js
如果显示了我们上面写的'Node app start at port 9093',表示监听成功
此时打开浏览器,访问localhost:9093
并没有返回Hello word。 这是因为修改文件后没有重启server,先control+c退出,然后重新执行
node server.js
刷新页面
express还可以使用其他的数据格式
app.get('/data',function(req,res){
res.json({name:'react',type:'code'})
})
然后重启server.js,进入/data目录
每次修改都要重启实在是太繁琐,我们使用nodemon来自动重启
nopm install -g nodemon
之前是用的node server.js
,现在改成nodemon server.js
当文件修改后会自动重启
使用app.get和app.post分开开发get和post接口
res.send --- 返回文本
res.json --- 返回json
res.sendfile --- 返回文件
Mongodb
下载mongodb
- 官网下载
- MacOS里可以直接
brew install mongodb
启动Mongodb
mongod --config /usr/local/etc/mongod.conf
执行
mongo
这里一定要说一下
刚下完mongodb时一直连接错误
MongoDB shell version v3.4.2
connecting to: mongodb://127.0.0.1:27017
2017-03-28T02:11:34.775+0800 W NETWORK [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
2017-03-28T02:11:34.778+0800 E QUERY [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
connect@src/mongo/shell/mongo.js:237:13
@(connect):1:6
exception: connect failed
找了半天才找到解决办法
在bash输入
brew services start mongodb
然后再输入mongo
回车,连接成功!
node上比较好用的mongodb库是mongoose
安装mongoose
npm install mongoose --save
引入
const mongoose = require('mongoose')
然后连接mongo
const DB_URL = 'mongodb://localhost:27017'
mongoose.connect(DB_URL)
mongoose.connection.on('connected',function(){
console.log('mongo connect success')
})
看到打印出mongo connect success表明连接成功了
类似于mysql的表,mongo里有文档、字段的概念
通过mongoose操作mongodb,储存的就是json
Mongoose的基础使用
- Connect链接数据库
- 定义文档模型,Schema和model新建模型
Mongoose文档类型
- String,Number等数据结构
- create,remove,update分别用来增、删、改的操作
- find和findOne用来查询数据
create
User.create({
name:'jack',
age:18
},function(err,doc){
if(!err){
console.log(doc)
}else{
console.log(err)
}
})
find
结合上面的代码
app.get('/data',function(req,res){
User.find({/*过滤条件*/},function(err,doc){
res.json(doc)
})
})
find与findOne
我们来多增加几条数据
用
find
来查找age为20的数据
app.get('/data',function(req,res){
User.find({age:20},function(err,doc){
res.json(doc)
})
})
返回结果
再来试试findOne
app.get('/data',function(req,res){
User.findOne({age:20},function(err,doc){
res.json(doc)
})
})
可以看到只会返回第一条age为20的数据
remove
User.remove({age:20},function(err,doc){
if(!err){
console.log(doc)
}
})
update
User.update({name:'王二狗'},{'$set':{name:'葫芦娃'}},function(err,doc){
if(!err){
console.log(doc)
}
})