技能学习:学习使用Node.js + Vue.js,开发前端全栈网站-14-6.迁移本地数据到服务器(mongodump)

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: 如题,将本地Mongodb数据库数据迁移到服务器中。
1.获取本地数据库数据

在node项目中,找到当初我们的数据库配置:
在这里插入图片描述
找到我的数据库名为node-mine,所以根据数据库名调取数据库,使用mongodump方法:

// -d表示需要导出的是数据库
mongodump -d node-mine

在这里插入图片描述
糟,有报错,需要配置系统变量。
找到mongodb的bin目录,赋值到系统变量Path中:
在这里插入图片描述
确定后重启vscode,输入mongodump命令:
在这里插入图片描述
依旧有报错,查询原因大概是msi下载mongodb方式缺少了一些文件mongo工具类,所以需要下载mongodb数据库工具的zip包,将其中bin文件夹中之前没有的内容复制进已安装好mongodb的bin文件夹中
在这里插入图片描述
在这里插入图片描述
复制进去之后,看见没,那个mongodump.exe:
在这里插入图片描述
这回再重启vscode尝试mongodump命令:
在这里插入图片描述
啊,真爽。
此时数据库中的数据已经获取到了,下一步导入到服务器中。

2.导入数据库数据到网站服务器

(1)通过vscode进入网站服务器,今天不用之前那个服务器配置文件夹了,进入root用户个人文件夹:
在这里插入图片描述
将dump文件直接复制到网站服务器root文件夹下:
在这里插入图片描述
调出终端,执行命令mongorestore,mongodump与mongorestore是成对存在的,分别是导出和导入:
在这里插入图片描述
此时导入成功,数据应该存在了,回到admin端网页登录输入密码进行查看:
在这里插入图片描述
在这里插入图片描述
成功。访问其他数据:
在这里插入图片描述
有错误,但既然可以登录,就跟数据库没关系。
我猜猜啊,看他报错是找不到module,找不到inflection包,所以应该是接口命名单复数的问题。
以下斜体内容为我测试内容,大家暂时不要操作
*我记得admin和web端中的npm包还没有更新,去admin端文件夹中更新试一下。
直接上git bash,速度快一些:*
在这里插入图片描述
在这里插入图片描述
这次试一下还是不行,还是找不到inflection,得了,专门下载一下inflection试试:
在这里插入图片描述
还是不行,重启服务器:)
在这里插入图片描述
最终解决:
还是不行,再试一下在server端安装inflection,重启一下项目:
在这里插入图片描述
刷新页面,出现内容了:
在这里插入图片描述
反正就是找不到包,之后碰到包的问题,直接在server端重新下载,反正web和admin都扔进来了,其他两个外部文件夹基本没什么用了。
检查下其他页面:
在这里插入图片描述
图片都不在了,检查下原因,是因为当初我们存储图片的时候,路径用的都是http://localhost:3000/....:
在这里插入图片描述
所以我们需要在vscode中改一下,当然图片已经无法改回去了,我们要做的是让以后上传的图片路径是对的。

3.本地修改功能更新上传到网站服务器

其实目前我们通过vscode远程连接,可以直接修改图片连接的功能,只需要进入到node-mne的文件夹,手动找到server/routes/admin/index.js即可:
在这里插入图片描述
但是后期我们需要完善网站内容,还是需要本地先进行功能上的完善,继续补充上传到git服务器再到网站服务器中。所以本次我们在本地修改,走一遍流程。
(1)本地修改代码
在这里插入图片描述
(2)查看当前git版本库状态

git status

在这里插入图片描述
我们刚才修改的文件index.js已被找到,此时发现我们之前迁移数据库时的文件,已经没用了,删了即可。删除后再次执行命令:
在这里插入图片描述
确认更改了此文件,下一步,可以查看此文件哪里被修改了:

git diff

在这里插入图片描述
(3)提交本地代码到git服务器
与之前过程相同,二次提交内容:

git commit -am "修改了上传图片功能的url"

在这里插入图片描述
推送更改到git服务器版本库中:

git push

在这里插入图片描述
此时我们的gitee中代码就更新了。
但此时还没有到网站服务器,所以需要在网站服务器中拉取数据。
(4)网站服务器拉取项目数据

git pull

在这里插入图片描述
(5)重启pm2服务
每次代码更新后都需要重启服务,pm2只要不重启服务器就不会有所更新,所以我们要手动重启:

pm2 reload index

之前我都是先关了再开,没想到还有这种好命令:)。
在这里插入图片描述
此时,代码更新完成。

4.更改网站服务器中的图片地址

其实就是介绍一下mongodb的可视化软件——Robo 3T
(1)安装Robo 3T
下载地址https://robomongo.org/
在这里插入图片描述
下载zip安装包后傻瓜安装:
在这里插入图片描述
安装成功后进入软件。
(2)远程连接数据库
在这里插入图片描述
与MySQL的Navicat相同,都是远程连接到服务器数据库:
在这里插入图片描述
点击连接后进入数据库,其中分为三种形式,表格形式与navicat相同,代码格式就是以json格式呈现。
(3)修改图片数据
修改数据方法有两种,第一种与Navicat相似,直接进入表格格式进行修改保存,但同样修改的是代码格式:
在这里插入图片描述
修改后保存即可:
在这里插入图片描述
第二种就是代码形式修改,利用js代码对json数据进行编辑:
在这里插入图片描述
例如现在我需要修改广告页面中的所有图片地址,只需要用map遍历数组找到每条数据中的items中的image,利用replace修改其部分内容。

db.getCollection('ads').find({}).map(doc => {
    // 如果doc.items.image存在,则将localhost:3000改为zslhr.top,否则为null
    doc.items.image = doc.items.image ? doc.items.replace('localhost:3000', 'zslhr.top') : null
    // 数据库.集合.save方法  进行修改数据,没有这条将不会修改
    db.ads.save()
    // 运行显示修改后内容
    return doc
})

在这里插入图片描述
Ctrl + Enter运行:
在这里插入图片描述
???,不可以保存null?那就改成空字符串再试一下,还是不行,可能是数据中的image都存在的原因,大致修改代码,不用三元表达式:
在这里插入图片描述
说找不到image,想了以下原因可能是image在items下边的数组中,应该有索引值
在这里插入图片描述
所以在doc中再套一层map测试:

db.getCollection('ads').find({}).map(doc => {
    doc.items.map(doc2 => {
        // 如果doc.items.image存在,则将localhost:3000改为zslhr.top,否则为null
        doc2.image = doc2.image ? doc2.image.replace('localhost:3000', 'zslhr.top') : null
        // 运行显示修改后内容
        return doc2
    })
    // 数据库.集合.save方法  进行修改数据,没有这条将不会修改,另外save()方法中要将doc加入,否则保存全局时会找不到
    db.ads.save(doc)
    return doc
})

在这里插入图片描述
修改成功,此时回到页面中刷新测试:
在这里插入图片描述
成功。
到此,项目上线已经掌握,node.js+vue.js方法学习到此结束,在之后完善我的网站时碰到问题我会继续编辑文章,大家有什么问题可以评论我们一起解决。

相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
18天前
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
|
1月前
|
移动开发 前端开发 JavaScript
Vue与React两大前端框架的主要差异点
以上就是Vue和React的主要差异点,希望对你有所帮助。在选择使用哪一个框架时,需要根据项目的具体需求和团队的技术栈来决定。
218 83
|
7天前
|
JavaScript 前端开发 编译器
Vue与TypeScript:如何实现更强大的前端开发
Vue.js 以其简洁的语法和灵活的架构在前端开发中广受欢迎,而 TypeScript 作为一种静态类型语言,为 JavaScript 提供了强大的类型系统和编译时检查。将 Vue.js 与 TypeScript 结合使用,不仅可以提升代码的可维护性和可扩展性,还能减少运行时错误,提高开发效率。本文将介绍如何在 Vue.js 项目中使用 TypeScript,并通过一些代码示例展示其强大功能。
67 22
|
1月前
|
弹性计算 Linux 网络安全
阿里云服务器迁移中心SMC实战指南:跨平台业务迁移教程参考
现在越来越多的个人和企业用户选择将其他云平台或者服务商的业务迁移到阿里云,但是如何快速且安全完成迁移是很多用户比较关注的问题,我们可以选择使用阿里云提供的服务器迁移中心(Server Migration Center,简称SMC),这个产品是阿里云提供给您的迁移平台,专注于提供能力普惠、体验一致、效率至上的迁移服务,满足您在阿里云的迁移需求。本文为大家展示使用阿里云服务器迁移中心SMC将其他云平台业务迁移至阿里云的教程,以供参考。
|
2月前
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
2月前
|
安全 关系型数据库 MySQL
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
【YashanDB知识库】YMP从mysql迁移到崖山,报错:服务器错误
|
2月前
|
人工智能 JavaScript 前端开发
Vue 性能革命:揭秘前端优化的终极技巧;Vue优化技巧,解决Vue项目卡顿问题
Vue在处理少量数据和有限dom的情况下技术已经非常成熟了,但现在随着AI时代的到来,海量数据场景会越来越多,Vue优化技巧也是必备技能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
4月前
|
JavaScript 前端开发 jenkins
抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
本文探讨了在不依赖Node和VSCode的情况下,仅使用记事本和浏览器开发一个完整的Vue3前端项目的方法。通过CDN引入Vue、Vue Router、Element-UI等库,直接编写HTML文件实现页面功能,展示了前端开发的本质是生成HTML。虽然日常开发离不开现代工具,但掌握这种基础方法有助于快速实现想法或应对特殊环境限制。文章还介绍了如何用Node简单部署HTML文件到服务器,提供了一种高效、轻量的开发思路。
113 10
|
4月前
|
安全 大数据 Linux
云上体验最佳的服务器操作系统 - Alibaba Cloud Linux | 飞天技术沙龙-CentOS 迁移替换专场
本次方案的主题是云上体验最佳的服务器操作系统 - Alibaba Cloud Linux ,从 Alibaba Cloud Linux 的产生背景、产品优势以及云上用户使用它享受的技术红利等方面详细进行了介绍。同时,通过国内某社交平台、某快递企业、某手机客户大数据业务 3 大案例,成功助力客户实现弹性扩容能力提升、性能提升、降本增效。 1. 背景介绍 2. 产品介绍 3. 案例分享
103 1
|
JavaScript 数据可视化 前端开发
《JavaScript数据可视化编程》——导读
在我们的日常生活中,数据的重要性与日俱增。尤其对于一些庞大的组织机构(诸如Facebook和Google这种体量的公司)来说,数据几乎是一切决策的核心。在地缘政治领域,正在前所未有地收集数据,以致爆出诸如美国国家安全局监控丑闻这样的事件,这从另一个侧面反映了我们正在经历一个宏观数据时代。
2861 0