用MongonDB创作数据库步骤、koa2安装

1、下载MongonDB

c盘根目录将data文件夹

2、打开两个命令窗口,一个命令窗口输入mongod,另一个输入mongo

(可以打开 MongoDB Compass 可视化工具查看数据库)

3、建立文件夹,在VSCode中打开,创建数据库语句的js文件

4、在输入mongo的命令窗下输入db.workmate.find(),可查看建立好的workmate

5、在输入mongo的命令窗下输入各种查询命令

//常用命令
db admin  //连接admin数据库,默认连接test数据库
db.version() //查看当前数据库的版本
use smile; //创建数据库,如果不创建集合则会自动删除

db.getCollectionNames() //查看当前数据库创建的集合
db.testdb.insert({name:'ddsfa',age:'12'})  //向集合插入数据
db.testdb.find({name:'ddsfa',age:1}) //查询testdb集合,字段name=ddsfa的,age=1(age字段也查)
page=3 limit=5 则 num = (page-1)*limit
db.testdb.find().skip(num).limit(limit) //根据页码查

二、koa2在项目中使用

1、在vue项目的根目录下新建service文件夹,并cd service  进入

2、使用cnpm init -y 生成并初始化package.json 文件。

3、在终端中使用cnpm来安装koa,cnpm install --save koa

4、在service文件夹下新建index,js文件,内容如下:

const Koa = require('koa')
const app = new Koa()
app.use(async(ctx)=>{
    ctx.body = '<h1>hello Koa2</h1>'
})
app.listen(3000,()=>{
    console.log('[Server] starting at port 3000')
})

5、在浏览器上输入:127.0.0.1:3000,出现内容则安装成功

node+mongodb爬虫

新建文件夹:pachonapp
安装:cnpm install mongodb
      cnpm install axios
建index.js:
let axios = require("axios");
//封装多条内容插入
function inserMany(collection,arr){
    return new Promise((resolve,rejects)=>{
        var MongoClient = require('mongodb').MongoClient;
        var url = "mongodb://localhost:27017/";
        MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
            if (err) throw err;
            var dbo = db.db("lol");
            dbo.collection(collection).insertMany(arr, function(err, res) {
                if (err) throw rejects(err);
                console.log("文档插入数量"+res.insertedCount);
                db.close();
                resolve()
            });
        });
    })
}
//封装单条内容插入
function inserOne(collection,obj){
    return new Promise((resolve,rejects)=>{
        var MongoClient = require('mongodb').MongoClient;
        var url = "mongodb://localhost:27017/";
        MongoClient.connect(url, { useNewUrlParser: true }, function(err, db) {
            if (err) throw err;
            var dbo = db.db("lol");
            dbo.collection(collection).insertOne(obj, function(err, res) {
                if (err) throw rejects(err);
                console.log("文档插入one");
                db.close();
                resolve()
            });
        });
    })
}
async function getHeroList(){
    let httpurl ="https://game.gtimg.cn/images/lol/act/img/js/heroList/hero_list.js"
    let result = await axios.get(httpurl)
    console.log(result.data.hero)
    await inserMany("herolist",result.data.hero)
    return  result.data.hero
}
async function getHero(heroid){
    let httpurl =`https://game.gtimg.cn/images/lol/act/img/js/hero/${heroid}.js`
    let result = await axios.get(httpurl)
    console.log(result.data.hero)
    await inserOne("heroinfo",result.data.hero)
    return  result.data.hero
}

async function getdata(){
    let herolist = await getHeroList()
    await herolist.reduce(async (prev,item,i)=>{  //上一个请求完了才做下一条
        await prev
        return new Promise(async (resolve,rejects)=>{
            await getHero(item.heroId)
            resolve()
        })
    },Promise.resolve())
}
getdata()

运行:node index.js
则会把数据放到lol数据库下的,herolist和heroinfo表下

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值