美文网首页前端成长路
MongoDB 存储数据时报错

MongoDB 存储数据时报错

作者: ninja梅梅 | 来源:发表于2017-03-28 16:38 被阅读131次

以下是开发个人博客的评论功能时的主要代码:
-评论的数据模型代码

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.Types.ObjectId;

var CommentSchema = new Schema({
    blog:{type: ObjectId, ref: 'Blog'},
    from:{type: ObjectId, ref: 'User'},
    to:{type: ObjectId, ref: 'User'},
    content: String,
    meta:{
        createAt: {
            type: Date,
            default: Date.now()
        },
        updateAt:{
            type: Date,
            default: Date.now()
        }
    }
});

-nodeJs存储页面post过来的信息代码

comment.save(function(err,blog){
        if(err){
            console.log(err);
        }
        res.redirect('/blog/'+ blogId);
    });

当存入第一条数据时,正常。存入第二条时打印出mongo报的如下错误:

{ MongoError: E11000 duplicate key error collection: myblog.comm
ents index: name_1 dup key: { : null }...}

报错后浏览了很多网站均无果,此时我的内心是崩溃的。在放弃的边缘苦苦挣扎着,或许是因为坚持得到了回报。终于在一个国外?(反正全是英文,但域名为.com)的网站上找到了错误的原因以及解决的方法。在这,我想向大家推荐一个不错的网站http://stackoverflow.com/ 我就是在这里得到了解救。

报错的原因:

从报错信息来看是说保存到comments文档中的主键name_1值为null.虽然很显然在以上代码里我并没有将name设置为主键。

解决方法

此时打开mongo控制台,输入db.comments.getIndexes()后,返回了一个包含4个对象的数组,说明在comments这个文档中我的主键有4个,再使用db.comments.dropIndex({"name":1}),语句删除name主键,依次删除其他两个主键,只留_id主键。
接下来就是见证奇迹的时刻了。
输入评论,发表。数据库里保存成功。

相关文章

  • MongoDB 存储数据时报错

    以下是开发个人博客的评论功能时的主要代码:-评论的数据模型代码 -nodeJs存储页面post过来的信息代码 当存...

  • MongoDB

    MongoDB简介 MongoDB 是一个基于分布式文件存储的数据库。 MongoDB存储模式 数据库存储集合,集...

  • MongoDB Aggregation聚合操作

    MongoDB Aggregation 最近在做产品的后台管理时,查询的数据量比较大时,MongoDB会报错,由于...

  • how to solve mongodb key contain

    mongodb 插入数据,数据中含有dot,mongodb 报错 springboot解决方式:不走springb...

  • mongodb学习笔记

    1、MongoDB特点 面向集合存储:MongoDB 是面向集合的,数据以 collection 分组存储。每个 ...

  • MongoDB 基础浅谈

    1 MongoDB 特点 面向集合存储:MongoDB 是面向集合的,数据以 collection 分组存储。每个...

  • MongoDB 副本集物理备份和恢复

    概述 MongoDB 部署在docker里,MongoDB的数据在创建docker时,通过逻辑卷进行管理和存储。当...

  • MongoDB开发之 日期类型

    MongoDB存储时间类型数据时,都是先转换为UTC时间,然后存储到数据库中。 日期类型 Date()显示当前时间...

  • MongoDB初识及启动

    mongoDB的存储结构 数据库->集合->子集合->文档 文档:是mongoDB存储数据的最小集合,就是js的一...

  • 0405-MongoDB

    MongoDB旨在为web应用提供可扩展的高性能数据存储方案MongoDB将数据存储为一个文档,数据结构由键值对(...

网友评论

    本文标题:MongoDB 存储数据时报错

    本文链接:https://www.haomeiwen.com/subject/qegjottx.html