vue项目配置MongoDB的增删改查操作

这篇具有很好参考价值的文章主要介绍了vue项目配置MongoDB的增删改查操作。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在Vue中配置MongoDB的增删改查操作,需要先安装`mongoose`模块来连接MongoDB数据库。

1. 在Vue项目的根目录中,使用命令行安装`mongoose`模块:

        npm install mongoose --save

2. 找到启动node的app.js文件(我这里是在server文件中,就是第三步中说的server文件)

vue项目配置MongoDB的增删改查操作,vue.js,mongodb,前端

const express = require('express')
const app = express()
const mongoose = require('mongoose');
var config = require('./config');//引入config中mongoDB地址

// 解析 url-encoded格式的表单数据
app.use(express.urlencoded({ extended: false }));
 
// 解析json格式的表单数据
app.use(express.json());

var article=require('./routes/article');
app.use('/article', article);

var db=mongoose.connect(config.db.path, {
    useNewUrlParser: true,
    useUnifiedTopology: true
})
db.then(function (data) {
  console.log('--数据库连接成功--');

}).catch(function (error) {
  console.log('数据库连接失败: ' + error);
});

module.exports = app

在上面的代码中,`mongoose.connect`用于连接MongoDB数据库 

我这里的config.db.path,是地址配置的,也可以直接将地址写进去

const url = 'mongodb://localhost:27017/mydatabase';
var db=mongoose.connect(url, {
    useNewUrlParser: true,
    useUnifiedTopology: true
})

3. 在Vue项目的根目录中新建一个server文件,server文件下新建文件config,在config中新建db.js文件

const mongoose = require('mongoose');
let Promise = require('bluebird');

// 定义数据模型
const ArticleSchema = new mongoose.Schema({
    article_title:String, //标题
    article_desc:String,    //简介
    article_info:String,    //内容
    createdAt: { //创建日期
        type: Date,
        default: Date.now
    }

});
//mongoose.model三个参数分别代表模型的名称、模型的Schema、模型的集合名称
const ArticleModel = mongoose.model('Article', ArticleSchema);
Promise.promisifyAll(ArticleModel);
Promise.promisifyAll(ArticleModel.prototype);
module.exports = ArticleModel

mongoose.connection`用于获取数据库连接对象。然后,使用`mongoose.Schema`定义Article的数据模型,并使用`mongoose.model`创建Article模型。(这里的数据模型就是你页面数据的字段)。

4. 在server>routes文件中新建article.js

var express = require('express');
var articleRouter = express.Router();
var ArticleModel = require('../db');
//查询
articleRouter.get('/:id', (req, res) => {
    const articleId = req.params.id;
    if (!articleId) {
        return {
            err_code: -2,
            err_msg: 'no id'
        };
    }
    ArticleModel.findOne({_id: articleId}).then(response => {
        res.send({
            err_code: 0,
            data: response
        });
    }).catch(err => {
        console.log(err);
        res.send({
            err_code: -1,
            err_msg: 'server error'
        });
    });
});
// 获取列表
articleRouter.get('/', (req, res) => {
    let page = req.query.page,
        size = req.query.size,
        store = req.query.store;

    page = parseInt(page, 10) || 1;
    size = parseInt(size, 10) || 100;

    let skip = (page - 1) * size;
    let sort = '-createAt';
    let data = {};
    Promise.all([
        //Articletype 集合的数据  find 指定的查询条件 sort 排序规则  skip跳过指定数量的记录,用于分页查询  limit 返回的数据为指定的size  exec查询操作并返回记录
        ArticleModel.find(data).sort(sort).skip(skip).limit(size).exec(),
        ArticleModel.count(data)
    ]).then(([data, count]) => {
        res.send({
            data: data,
            total: count,
            err_code: 0
        });
    }).catch(err => {
        console.log(err);
        res.send({
            err_code: -2
        });
    });
});
// 新增列表
articleRouter.post('/', (req, res) => {
    var articleBody=req.body
    let data = {
        article_url: articleBody.article_url
    };
    //先检查是否有已经创建的数据
    ArticleModel.find(articleBody).then(datas => {
        'use strict';
        if (datas.length > 0) {
            res.send({
                err_code: -1,
                err_msg: '资源已存在'
            });
            return;
        }
        ArticleModel.create(articleBody).then(response => {
            res.send({
                err_code: 0,
                err_msg: '保存成功'
            });
        }).catch(res => {
            res.send({
                err_code: -2,
                err_msg: '保存失败'
            });
        });
    });
});
// 删除
articleRouter.delete('/:id', (req, res) => {
    const articleId = req.params.id;
    if (!articleId) {
        return res.send({
            err_code: -1,
            err_msg: '缺少ID'
        });
    }
    //mongoDB已经弃用remove使用deleteOne 删除单个文档或者deleteMany 删除多个文档
    ArticleModel.deleteOne({_id: articleId}).then(response => {
        res.send({
            err_code: 0
        });
    }).catch(err => {
        res.send({
            err_code: -2,
            err_msg: '删除失败'
        });
    });
});
// 修改
articleRouter.put('/', (req, res) => {
    const articleBody = req.body;
    const articleId = req.body.id;
    console.log(req.body)
    if (!articleId) {
        return res.send({
            err_code: -1,
            err_msg: '缺少id'
        });
    }
    ArticleModel.findOneAndUpdate({_id: articleId}, {$set: articleBody}).then(response => {
        res.send({
            err_code: 0,
        });
    }).catch(err => {
        console.log(err);
        res.send({
            err_code: -2,
            err_msg: '数据库错误'
        });
    });
});
module.exports = articleRouter

这里遇到最不好找的问题就是Mongoose更新会弃用一些方法,例如删除remove,就会报错ArticleModel.remove is not a function,网上找一下mongoose推荐使用的方法,这里remove更推荐使用`deleteOne`或`deleteMany`方法,取决于你想要删除单个文档还是多个文档。你可以替换`remove`方法为`deleteOne`或`deleteMany`来解决这个问题。 

5. 页面中调用

例子:

查询列表

import axios from 'axios'
dexport default{
    mounted():{
        axios.get('/article', {params}).then(res => {
            console.log(res)//查看是否调用成功
        });
    }
}

删除

axios.delete(`/article/${id}`).then(res=>{
                console.log(res.data)
                if(res.data.err_code==0){
                    this.$message({
                        message: '删除成功',
                        type: 'success'
                    })
                    this.initList()
                }else{
                    this.$message({
                        type: 'error',
                        message: res.data.err_msg
                    });
                }
            })

6. 请求接口的时候可能会报这个错误

给MongoDB设置了数据库访问权限,所以无论是 打开mongodb和连接去掉账号密码 都是显示数据库报错   所以无论运行node app.js 都是需要权限 才能成功的运用

vue项目配置MongoDB的增删改查操作,vue.js,mongodb,前端

在数据库连接的前面加上用户名和密码root:root,后面加上 authSource=admin  通过admin库进行登录认证

mongodb://admin:123@localhost:27017/mydatabase?authSource=admin '

如下图所示:

vue项目配置MongoDB的增删改查操作,vue.js,mongodb,前端文章来源地址https://www.toymoban.com/news/detail-703372.html

到了这里,关于vue项目配置MongoDB的增删改查操作的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MongoDB 的增、查、改、删

    单条增加 多条增加 这个查询,每一块都是一个个复杂的json串组合而成 查询age=18 查询 _id2 并且 age =18 排序 -1 是降序 1 是升序 分页 skip:跳过指定记录数 limit:返回结果数量 返回指定字段 0代表不显示 1代表显示 ** 注意:_id默认是显示的,只有_id不显示是设置0,其他字段都不

    2024年02月14日
    浏览(22)
  • 创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作

    本文为博主原创,转载请注明出处: 在本地创建项目的文件夹名称,如 node_test,并在该文件夹下进行黑窗口执行初始化命令              Express是一个流行的Web应用程序框架,可以帮助我们快速构建Web应用程序和API。Express提供了许多有用的功能,包括路由、中间件、请求响

    2024年02月06日
    浏览(84)
  • Mongodb 以及 node.js中使用mongoose操作数据库

    目录 1、lowdb 2、Mongodb是什么? 3、Mongodb核心概念 4、Mongodb的下载与使用 5、数据库与集合命令 5.1、数据库命令 5.2、集合命令 5.3、文档命令 6、Mongoose 6.1、插入文档 6.2、字段类型 6.3、字段值验证 6.3.1、必填项 6.3.2、默认值 6.3.3、枚举值 6.3.4、唯一值 6.4、删除文档 6.5、更新文

    2024年02月11日
    浏览(35)
  • Spring Boot入门(09):如何使用MyBatis的XML配置方式实现MySQL的增删改查操作?

            想要快速高效地开发Java Web应用程序,选择使用Spring Boot和MyBatis无疑是明智之举。本篇文章将教你使用MyBatis的XML配置方式,结合MySQL数据库,实现常见的增删改查操作,让你的应用程序更加实用和强大。跟随本文一起来探索MyBatis在Spring Boot中的力量吧!        

    2024年02月11日
    浏览(52)
  • python常用库之pymongo库(Python操作Mongodb数据库)| Django项目连接MongoDB方式选型(MongoEngine)

    github:https://github.com/mongodb/mongo-python-driver PyMongo用于与Python与MongoDB数据库进行交互的工具。bson包是Python的BSON格式 的实现。Pymongo包是MongoDB的本地Python驱动程序。gridfs包是gridfs 的pymongo实现。 Pymongo支持MongoDB 3.6、4.0、4.2、4.4、5.0和6.0。 总结:PyMongo 是 MongoDB 与 Django 交互的标准

    2024年02月10日
    浏览(43)
  • 【sql】MongoDB 增删改查 高级用法

    【sql】MongoDB 增删改查 高级用法 相关使用文档 MongoDB Query API — MongoDB Manual https://www.mongodb.com/docs/manual/reference/sql-comparison  

    2024年02月11日
    浏览(30)
  • MongoDB文档-进阶使用-spring-boot整合使用MongoDB---MongoRepository完成增删改查

    阿丹:         之前学习了在MongoDB客户端上的MongoDB语句现在将MongoDB整合到spring项目。 MongoDB文档--基本概念_一单成的博客-CSDN博客 MongoDB文档--基本安装-linux安装(mongodb环境搭建)-docker安装(挂载数据卷)-以及详细版本对比_一单成的博客-CSDN博客 MongoDB文档--基本安装-linu

    2024年02月14日
    浏览(36)
  • 前端Vue Node.js + Express + MongoDB 构建的后端服务API接口

    构建一个使用 Vue.js 作为前端, Node.js + Express + MongoDB 作为后端服务的全栈应用涉及到多个步骤。这里简要概述整个过程,并提供一些基本的代码示例来帮助你开始。 安装 MongoDB: 根据你的操作系统从 MongoDB 官网 下载并安装 MongoDB。 启动 MongoDB 服务: 安装完成后,根据 MongoDB 的

    2024年04月14日
    浏览(34)
  • MongoDB【MongoRepository& MongoTemplate】实现增删改查

    目录 1:文章评论 1.1:需求分析 1.2:表结构分析 1.3:技术选型 1.3.1:mongodb-driver 1.3.2:SpringDataMongoDB 1.4:文章微服务模块搭建 1.5:文章评论实体类的编写 1.6:文章评论的基本增删改查 1.7:根据上级ID查询文章评论的分页列表 1.8:MongoTemplate实现评论点赞 某头条的文章评论业

    2024年02月01日
    浏览(27)
  • Go实现mongodb增删改查的工具类

    mongodb官方go介绍 使用例子https://www.mongodb.com/docs/drivers/go/current/fundamentals/connection/#connection-example 快速入门https://www.mongodb.com/docs/drivers/go/current/quick-start/ 要对mongodb进行增删改查,需要添加对应的go驱动依赖,安装命令 2.1 Mongodb工具类代码 封装的工具类mongodao.go 2.2 使用例子 使用

    2024年02月13日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包