node后台,MongoDB作为数据库,vue前端获取数据并渲染

作为自己的第一个项目,也是毕业论文,记录点点滴滴,做完发现很简单,但还是纠结了几天。项目经历太少了 ......

前提:vue脚手架创建项目,node后台,MongoDB数据库,并且跨域还有配置好

背景:前端Home.vue组件从后台获取图片并以轮播图效果展示

后台:

models文件夹:存放各种数据库文件,由于存在好多种数据表结构,连接数据库时会产生问题,因此单独创建一个文件夹,创建db.js文件,该文件专门连接数据库。routes文件夹:路由处理文件

 1 /** db.js
 2  * 完成 MongoDB 的连接,向外暴露一个连接成功的对象
 3  * @type {Mongoose}
 4  */
 5
 6 module.exports = app =>{
 7     const mongoose = require(‘mongoose‘);
 8     mongoose.connect(‘mongodb://localhost: 27017/paper‘,{
 9         useNewUrlParser: true,
10         autoIndex: true
11     });
12 };

注意,db.js文件要在app.js中挂载一下,这样不用在每个数据库文件中引入

1 // 引入数据库连接文件 2 require(‘./util/db‘)(app);

 1 /**
 2  * lunbotu.js
 3  *   轮播图数据库,存放轮播图
 4  * @type {createApplication}
 5  */
 6
 7 const mongoose = require(‘mongoose‘);
 8
 9 const lunbotuSchema = new mongoose.Schema({
10     id:{
11         type:Number,
12         required:true
13     },
14     img_url:{
15         type:String,
16         required: true
17     }
18 });
19
20 module.exports = mongoose.model(‘Lunbotu‘,lunbotuSchema);
 1 /**
 2  * Lunbotu.js
 3  *   处理轮播图路由文件
 4  * @type {createApplication}
 5  */
 6
 7 const express = require(‘express‘);
 8
 9 const user = require(‘../models/lunbotu‘);
10
11 const Lunbotu = express.Router();
12
13 Lunbotu.get(‘/getlunbotu‘,async(req,res) =>{
14   const model = await user.find(req.body);
15   res.send(model)
16 });
17
18 module.exports = Lunbotu;

当然,路由文件要在app.js中引入挂载一下

数据库文件,先保存在json文件中,后插入数据库:

 1 {
 2   "lunbotus": [
 3     {"id": 1,"img_url": "https://imgcps.jd.com/ling/32516359271/5ZOB54mM6ZKc5oOg/MuS7tjnmipg/p-5bd8253082acdd181d02f9e3/d9f21951.jpg"},
 4     {"id": 2,"img_url": "https://img13.360buyimg.com/pop/s590x470_jfs/t1/102707/14/10983/62930/5e225312E0f1eba30/bc6455afaf998638.jpg.webp"},
 5     {"id": 3,"img_url": "https://img30.360buyimg.com/pop/s590x470_jfs/t1/85339/25/10650/75930/5e200467E0b197a12/b8ace6cd19292e26.jpg.webp"},
 6     {"id": 4,"img_url": "https://img13.360buyimg.com/da/s590x470_jfs/t1/52408/25/3424/84234/5d123c03Ebc277535/416e2048cdc0e87f.jpg.webp"},
 7     {"id": 5,"img_url": "https://img14.360buyimg.com/pop/s590x470_jfs/t1/97733/27/10037/93770/5e159e3eEdc7a4241/7e038b38040faa38.jpg.webp"},
 8     {"id": 6,"img_url": "https://img12.360buyimg.com/pop/s590x470_jfs/t1/110249/27/4836/99962/5e268761E6c600e7d/d400bdc49862944a.jpg.webp"}
 9     ]
10 }

数据插入数据库:

前端:

 1 <script>
 2     export default {
 3         name: "Home",
 4       data(){
 5           return{
 6             lunbotuList:[] // 获取存放轮播图
 7           }
 8       },
 9       created(){
10           this.getlunbo() // 调用方法
11       },
12       methods:{
13           async getlunbo(){
14             const res = await this.$axios.get(‘/getlunbotu‘,this.model);
15             // console.log(res);
16             if(res.status === 200 ){ //当状态码为200时表示请求成功
17               this.lunbotuList = res.data  // 将数据保存在数组中
18              }
19           }
20       }
21     }
22 </script>

上述代码中:console.log(res) 结果如下图所示:

 1 <template>
 2   <div>
 3 <!--    轮播图区域 -->
 4 <!--    auto 毫秒值 -->
 5     <mt-swipe :auto="3000">
 6       <mt-swipe-item v-for="item in lunbotuList" :key="item.id">
 7         <img :src="item.img_url">
 8       </mt-swipe-item>
 9     </mt-swipe>
10 </div>
11 </template>

原文地址:https://www.cnblogs.com/zhaohui-116/p/12229972.html

时间: 2024-08-30 02:53:55

node后台,MongoDB作为数据库,vue前端获取数据并渲染的相关文章

$.ajax()与vue结合获取数据并渲染

html: <div id="app1"> <ul> <li v-for="item in datas"> <div href=""> <div v-text="item.time"></div> <div href="" v-for="item1 in item.list"> <div v-tex

VUE通过索引值获取数据不渲染的问题

问题:vue里面当通过索引值获取数据时,ajax数据成功返回,但是在火狐下不渲染 解决: 原文地址:https://www.cnblogs.com/zjp-/p/10306665.html

asp.net mvc Areas 母版页动态获取数据进行渲染

经常需要将一些通用的页面元素抽离出来制作成母版页,但是这里的元素一般都是些基本元素,即不需要 进行后台数据交换的基本数据,但是对于一些需要通过后台查询的数据,我们应该怎么传递给前台的母版页呢 这里描述的是对于多个页面统一的数据部分,即多个页面中均保持一致且与各个页面无其他关系的页面, 虽然我们可以通过razor使用C#语言来获取数据并写入页面中,但这就违背我们view中尽可能不处理数据的意愿了 所以给出的解决方案是,通过ViewBag将需要的数据写入页面中,将读取数据的操作提取到baseCont

vue ajax获取数据的时候,如何保证传递参数的安全或者说如何保护api的安全

https://segmentfault.com/q/1010000005618139 点击提交,发送请求.但是api:123用于加密的参数,直接暴露了.右键源代码就可以看到 <body> <div class="row"> <div class="col-md-4 col-md-offset-4"> <table class="table table-bordered" id="content

MongoDB 新建数据库和表 查询数据表

MongoDB语法是原生ORM,根本不存在sql语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 新建数据库db1 > use db1 switched to db db1 显示当前使用数据库 > db db1 对数据库创建表(collection) db.<tablename> 创建一张user表 > db.user db1.user 在user表插入一条数据(collection) insert() 插入一条或者多条数据,需要带有允许插入多条

mongodb的数据库,集合,数据可介绍。

我们知道,在关系型数据库里面有数据库.数据表.表里面是一行一行的数据.而mongodb是非关系型数据库,它有的是数据库.集合.文档,分别对应关系型里面的数据库.数据表.和表里面一行一行的数据.在mongodb里,文档构成集合,集合构成数据库 关系组成: 1.文档 这个文档,可不是平常说的word文档,在mongodb里面,文档指的是集合里面的一行数据.来看一下它的样子. 可以看到,一个文档有三部分组成,id(用来表示一行文档),键名(一个文档中不可出现重复的键名,且区分大小写)和键值,一行文档中

从SQLite获取数据完成一个产品信息展示

在ios实际开发当中,我们常常用到Core Data做为数据储存首选.但在处理一些大量复杂的数据值且数据之间相互关联的时候,这就不得不使用关系型数据库来实现.例如一个导航程序,自身应该包含大量的地图自身数据并且数据需要在app启动的时候就开始读取加载.而且数据本身变动不是特别频繁.重复向服务器发送请求获取信息是一件十分浪费的事情.因此我们可以用一个本地数据文件来直接配置.做为轻量级关系型数据库的sqlite是ios开发首选.而xcode本身包含了sqlite库,因此在ios使用的时候不需要额外配

Vue.js实践:一个Node.js+mongoDB+Vue.js的博客内容管理系统

项目来源 以前曾用过WordPress搭建自己的博客网站,但感觉WordPress很是臃肿.所以一直想自己写一个博客内容管理器. 正好近日看完了Vue各个插件的文档,就用着Vue尝试写了这个简约的博客内容管理器(CMS). 嗯,我想完成的功能: 一个基本的博客内容管理器功能,如后台登陆,发布并管理文章等 支持markdown语法实时编辑 支持代码高亮 管理博客页面的链接 博客页面对移动端适配优化 账户管理(修改密码) Demo 登陆后台按钮在页面最下方"站长登陆",可以以游客身份登入后

vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据

在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-server模拟的接口,这个前面的文章中有提到,需要的可以去翻阅. 整个的流程是在组件的created中提交dispatch,然后通过action调用一个封装好的axios然后再触发mutation来提交状态改变state中的数据,然后在组件的计算属性中获取state的数据并渲染在页面上 首先新需要在项