2017-04-02 7 views
0

Ich bin ein einfaches Blog app machen NodeJS mit + auszudrücken, i ersten Beitrag, ohne ein Problem hinzufügen kann, aber wenn ich versuche zweiten Beitrag hinzuzufügen bekam ich seine Fehler { MongoError: E11000 duplicate key error collection: restful_blog_app_v2.blogs index: username_1 dup key: { : null } MongoError: E11000 Nachschlüssel Fehler

das ist mein Schema

var mongoose = require("mongoose"); 
var passportLocalMongoose = require("passport-local-mongoose"); 

var BlogSchema = new mongoose.Schema({ 
    title: String, 
    image: String, 
    body: String, 
    created: { 
     type: Date, 
     default: Date.now 
    }, 
    author: { 
     id: { 
      type: mongoose.Schema.Types.ObjectId, 
      ref: "User" 
     }, 
     username: String 
    } 
}); 

BlogSchema.plugin(passportLocalMongoose); 
module.exports = mongoose.model("Blog", BlogSchema); 

das ist das Benutzerschema

var mongoose = require("mongoose"); 
var passportLocalMongoose = require("passport-local-mongoose"); 

var UserSchema = new mongoose.Schema({ 
    username: String, 
    password: String, 
}); 

UserSchema.plugin(passportLocalMongoose); 

module.exports = mongoose.model("User", UserSchema); 

das ist die neue Post-Route erstellen

app.post("/blogs", isLoggedIn, function (req, res) { 
    req.body.blog.body = req.sanitize(req.body.blog.body); 
    var title = req.body.blog.title; 
    var image = req.body.blog.image 
    var body = req.body.blog.body; 
    var created = req.body.blog.created; 
    var author = { 
     id: req.user._id, 
     username: req.user.username 
    } 
    var newPost = { 
     title: title, 
     image: image, 
     body: body, 
     created: created, 
     author: author 
    } 
    Blog.create(newPost, function (err, newBlog) { 
     if (err) { 
      console.log(err); 
      res.render("new"); 
     } else { 
      console.log(newBlog); 
      res.redirect("/blogs"); 
     } 
    }); 

}); 

Ich habe versucht, um die gesamte Datenbank mit db.dropDatabase fallen gelassen() aus der Mongo-Konsole, aber das Problem weiter bestehen nach wie vor, nicht sicher, was jetzt Dies wird verursacht durch passport-local-mongoose,

+0

In Ihrem Code ist Benutzername ein eindeutiger Index in Mongo-Schema. Sie fügen 2 Beiträge mit dem gleichen Benutzernamen hinzu und speichern sie in der Datenbank wird der Fehler führen. – thelonglqd

+0

@thelonglqd Wie können Sie sehen, Benutzername ist eindeutiger Index in Mongo-Schema? – Tolsee

+1

index: username_1 dup key: {: null} Dieser Fehler besagt, dass das Feld username ein eindeutiger Index ist und Sie bereits einen Nullwert in der Datenbank haben. Wenn Sie also einen anderen Nullwert speichern, um das Feld in der Datenbank eindeutig zu indizieren, wurde dieser Fehler ausgelöst siehe ... Bitte auf diese Antwort http://stackoverflow.com/a/24430345/6880789 – Tolsee

Antwort

1

zu tun, die, nach its fine manual, macht username ein eindeutiges Feld standardmäßig.

Sie haben dieses Plugin BlogSchema, hinzugefügt, die wie Sie zunächst hatte die Benutzerdaten in diesem Schema scheint aber bewegt es zu einem separaten Schema (UserSchema) und vergessen, es aus dem ehemaligen zu entfernen.

Starten Sie, indem Sie es nicht für BlogSchema verwenden, und Sie müssen auch den eindeutigen Index auf username auf der blogs Sammlung fallen lassen.

+0

vielen Dank, ich tat genau wie du gesagt hast und es funktioniert jetzt :) – Michael

Verwandte Themen