当前位置: 首页 > 后端技术 > Node.js

【Part2】用JS写Blog(node+vue+mongoDB)

时间:2023-04-03 17:36:56 Node.js

【Part1】用JS写Blog(node+vue+mongoDB)。结束项目开始写。实现mongoDB数据库的连接。整理后台目录。下面是express-generate生成的工程目录。bin/www是项目的启动文件。除了上次说的npmstart,还可以在命令后执行nodebin/www。其实这两个命令是一样的,只是在package.json文件中建立了两者之间的链接,如下图node_modules就不用多说了,项目的依赖都安装在这里public是的放一些公共资源的文件夹,以后不用了,所以把他删掉了。路由器下的.js文件是我们编写API的地方。为了更直观,我把router的名字改成了api,里面的文件名字改成了post.js和admin.js。(我把api分成了两个文件,一个是文章相关的,一个是管理员相关的)views是页面的模板,因为我们后台只提供数据接口,所以不用页面文件,我把它删除了app.js是整个项目的入口文件,相当于后端项目的大脑。其中的文件是按顺序执行的。package.json是关于我们项目中使用的依赖项。需要注意的是,需要在根目录下创建一个models文件夹,用于初始化mongodb数据库等操作。下面整理一下后端目录安装mongoDB数据库的安装方法。这里我就不多说了。网上有很多资源。可以去官网阅读官方文档。我是用Docker安装的,方便本地调试。安装完成后不要忘记启动mongodb来安装mongoose。Mongoose是mongodb的一个对象模型工具。有了它,你就可以轻松操作mongodb数据库。对mongoose不是很了解的朋友可以自己google一下,资料很多。在命令行输入npminstallmongoose--save。安装完成后,先定义模型,在models文件夹新建post.js模型定义文章,填写内容letmongoose=require('mongoose')//引入mogoose//在Mongoose中,一切从架构开始。每个模式都映射到一个MongoDb集合并定义该集合中文档的形式。letpostSchema=newmongoose.Schema({title:String,//文章标题指定为字符串类型content:String//文章内容指定为字符串类型})letpostModel=mongoose.model('posts',postSchema)//定义模型module.exports=postModel//通过commonJS模块语法导出并在models文件夹下新建admin.js定义管理员模型并填写内容letmongoose=require('猫鼬')让adminSchema=新猫鼬。Schema({name:String,//usernamepass:String//password})letadminModel=mongoose.model('admin',adminSchema)module.exports=adminModel继续在connect的models文件夹下新建init.js到mongoDB数据库,填写内容letmongoose=require('mongoose')mongoose.connect('mongodb://localhost:27017/blog')//数据库的端口号根据需要调整。一般mongodb是直接安装启动的,默认端口号是27017,如果通过docker安装,端口号会是其他的。blog是我们博客的数据库名,如果没有名为blog的数据库,会自动添加。///打印连接状态的日志,可以选择写或者不写mongoose.connection.on('connected',(req,res)=>{console.log('MongoDBconnectedsuccess')})猫鼬.连接。on('err',(req,res)=>{console.log('MongoDB连接失败')})mongoose.connection.on('disconnected',(req,res)=>{console.log('MongoDBconnecteddisconnected')})接下来,重启我们的后端项目。如果上次打开的进程还没有关闭,命令行control+c关闭进程,输入npmstart重启项目。fk,报错。.找不到索引文件。事实证明,我们只是更改了index.js和user.js文件的名称。因为app.js中引用了这两个文件,所以我们找到app.js,改成andto修改完成后,执行npmstart项目成功,但是结果是没有打印日志说明我们的数据库没有连接的。找了半天,原来是app.js中没有引用到我们的init.js文件,所以肯定是init没有执行。.js文件,因为整个项目的主要入口文件是app.js,所以我们在app.js中引用它现在重启项目,看看是否有日志数据库连接成功,然后下一步写接口!