vue+node+mongoDB 火车票H5(六)---城市列表保存到MongoDB数据库并且启用node.js服务
把车站列表保存到数据库,并且从本地创建服务
node.js创建httpserver
1.搭建基于express的运行环境
全局安装express-gengerator
cnpm install -g express-gengerator
2.创建express项目,创建了本地服务
express server
生成server目录,目录下的bin是可执行文件,运行bin下的www文件启动服务
node server/bin/www
启动成功打开浏览器localhost:3000
server下的app.js是入口文件
app.js的配置
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var ejs = require('ejs');
var index = require('./routes/index');
var users = require('./routes/users');
var stations = require('./routes/stations');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.engine('.html',ejs.__express);
app.set('view engine', 'html');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', index);
app.use('/users', users);
app.use('/stations', stations);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
安装mongoose
cnpm install mongoose --save
在路由route文件夹下添加stations.js文件
var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Stations = require('../models/stations');
//链接mongodb数据库
mongoose.connect('mongodb://127.0.0.1:27017/train');
mongoose.connection.on("connected", function(res){
console.log("MongoDB connected success.");
});
mongoose.connection.on("error", function(){
console.log("MongoDB connected fail.");
});
mongoose.connection.on("disconnected", function(){
console.log("MongoDB connected disconnected.");
});
router.get("/", function(req,res,next){
Stations.find({}, function(err,doc){
if(err){
res.json({
status:false,
msg:err.message
});
}else{
res.json({
status:true,
msg:'获取车站成功',
result:{
count:doc.length,
list:doc
}
})
}
})
});
module.exports = router;
server文件夹下新建models文件夹,models下新建stations.js文件
var superagent = require('superagent')
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var stationSchema = new Schema({ //新建数据表
"sta_name":String, // 车站名称
"sta_ename":String, // 车站的英文名
"sta_code":String // 车站对应的三字码
});
var monModel = mongoose.model('Station',stationSchema);
const url = 'https://kyfw.12306.cn/otn/resources/js/framework/station_name.js?station_version=1.9069'
let stalists = []
superagent.get(url)
.end(function(response,result){
if (result.statusCode==200) {
let r = result.text.split('=')[1]
let arr = r.split('@')
arr.forEach((i,index)=>{
let list = {}
list.sta_name = i.split('|')[1];
list.sta_ename = i.split('|')[3];
list.sta_code = i.split('|')[2];
stalists.push(list);
})
monModel.find({},function(err,docs){
console.log(docs.length)
if(!docs.length){ // 如果数据库里有数据就不插入,否则就插入数据
// 把车站信息写入数据库
monModel.insertMany(stalists, function(err, docs){
if(err) console.log(err);
console.log('车站信息写入成功:' + docs);
});
}
})
}
})
module.exports = monModel;
最后打开localhost:3000/stations 就可以访问到车站数据了
可以通过接口访问加载了,vue里用axios, 但是这里会存在跨域问题,在vue项目下的config文件下的index.js更改配置,在dev下加
proxyTable: {
'/stations':{
target:'http://localhost:3000'
}
},
一系列配置之后就能通过axios愉快的访问接口啦~
vue+node+mongoDB 火车票H5(六)---城市列表保存到MongoDB数据库并且启用node.js服务的更多相关文章
- 实现多线程爬取数据并保存到mongodb
多线程爬取二手房网页并将数据保存到mongodb的代码: import pymongo import threading import time from lxml import etree impo ...
- 吴裕雄--天生自然python数据清洗与数据可视化:MYSQL、MongoDB数据库连接与查询、爬取天猫连衣裙数据保存到MongoDB
本博文使用的数据库是MySQL和MongoDB数据库.安装MySQL可以参照我的这篇博文:https://www.cnblogs.com/tszr/p/12112777.html 其中操作Mysql使 ...
- 吴裕雄--天生自然PYTHON爬虫:安装配置MongoDBy和爬取天气数据并清洗保存到MongoDB中
1.下载MongoDB 官网下载:https://www.mongodb.com/download-center#community 上面这张图选择第二个按钮 上面这张图直接Next 把bin路径添加 ...
- node 爬虫 --- 将爬取到的数据,保存到 mysql 数据库中
步骤一:安装必要模块 (1)cheerio模块 ,一个类似jQuery的选择器模块,分析HTML利器. (2)request模块,让http请求变的更加简单 (3)mysql模块,node连接mysq ...
- 使用官方组件下载图片,保存到MySQL数据库,保存到MongoDB数据库
需要学习的地方,使用官方组件下载图片的用法,保存item到MySQL数据库 需要提前创建好MySQL数据库,根据item.py文件中的字段信息创建相应的数据表 1.items.py文件 from sc ...
- 将 node.js 的数据保存到 mongo 数据库中
Mongo 数据库 安装 首先到 Mongo 的官方网站下载安装程序:http://www.mongodb.org/,我下载的文件名为:mongodb-win32-x86_64-2008plus-2. ...
- 获取豆瓣读书所有热门标签并保存到mongodb数据库
目标url:https://book.douban.com/tag/?view=type&icn=index-sorttags-all 目的:抓取所有标签名称(tag_name),标签链接(t ...
- vue+node+mongoDB 火车票H5(五)---城市选择
选择城市,支持搜索,储存选择过城市的历史记录,点击索引能跳到相应位置 1. 父子组件传值,trainCity城市选择组件,选择城市后改变父组件的值 2. 把城市数组按照字母A到Z排序 3.点击字母索引 ...
- vue+node+mongoDB火车票H5(七)-- nodejs 爬12306查票接口
菜鸟一枚,业余一直想做个火车票查票的H5,前端页面什么的已经写好了,node+mongoDB 也写了一个车站的接口,但 接下来的爬12306获取车次信息数据一直卡住,网上的爬12306的大部分是pyt ...
随机推荐
- 常用的SQL
--时间计算: select GETDATE() ,GETDATE()) ,GETDATE()) ,GETDATE()) ,GETDATE()) ,GETDATE()) ,GETDATE()) --查 ...
- Redis(十九):Redis压力测试工具benchmark
redis-benchmark使用参数介绍 Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求. (类似于 Apache ab 程序).你可以使用 ...
- tomcat开启https协议
1.在tomcat的conf/server.xml 中配置 <Connector port="443" protocol="org.apache.coyote.ht ...
- CentOS6.2 下安装OpenGL开发库
在Linux下做Qt开发,结果运行程序的时候提示找不到GL/gl.h文件,所以只能先把OpenGL库安装上去,不知道这样操作对不对,以后再考虑吧,下面开始安装 1.查看mesa相关的包 yum lis ...
- 微博excel数据清洗(Java版)
微博数据清洗(Java版) 原创 2013年12月10日 10:58:24 2979 大数据公益大学提供的一份数据,义务处理一下,原始数据是Excel,含有html标签,如下: 要求清洗掉html ...
- 理解vertical-align或“如何竖向居中”<转>
在各种技术论坛里经常会有这样的问题提出,“我如何能将这个东西竖向居中?”这个问题通常会跟随着这样一句话,“我使用了 vertical-align:middle,但是不管用! ” 这个问题其实有三个层面 ...
- hdu4746 Mophues 莫比乌斯
/** 题目:hdu4746 Mophues 链接:http://acm.hdu.edu.cn/showproblem.php?pid=4746 题意:求x,y在给定范围内gcd(x,y)分解素因子的 ...
- LVM简介
3. 创建VG.. 7 4. 创建LV.. 9 5.LV格式化及挂载... 10 一.LVM简介 LVM是 Logical Volume Manager(逻辑卷管理)的简写,它由Heinz Mauel ...
- PHP多进程编程(3):多进程抓取网页的演示
我们知道,从父进程到子经常的数据传递相对比较容易一些,但是从子进程传递到父进程就比较的困难. 有很多办法实现进程交互,在php中比较方便的是 管道通信.当然,还可以通过 socket_pair 进行通 ...
- c/c++学习之c++ 中的list <>容器
http://blog.csdn.net/mazidao2008/article/details/4802617 push 实例化 即添加 http://www.cnblogs.com/BeyondA ...