2016-08-09 29 views
1

Ich benutze mongod und versuche Daten in einer Sammlung zu speichern. I definierteMongodb Duplikatschlüssel mit leerer Datenbank

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

var Person = new Schema({ 
    id: Number, 
    name:String 

},{ collection: 'customers' }); 
module.exports = mongoose.model('Person', Person); 

Aber später, wenn ich ein Datum zB

var p = new Person({ 
    id:1, 
    name:"John" 
}); 

p.save(function(err,doc){ 
    if(err){ 
    console.log(err) 
} 
} 

einen Fehler

Nachricht wirft speichern will: ‚E11000 Nachschlüssel Fehlersammlung: Personenindex: id_-1 dup-schlüssel: {: 1} ',

Aber in mongo, wh de ich mache

db.Person.count() // returns 0 
show collections // nothing 

anzeigend, dass die Daten nicht Rüben gespeichert haben insid db. Warum wirft es immer wieder Fehler beim Duplizieren des Schlüssels?

+0

Versuchen Sie 'db.Person.getIndexes()'? –

+0

gibt leeres Array zurück –

+0

Versuchen Sie 'db.customers.count()' –

Antwort

0

In Mongoose-Schemas ist das Feld id speziell (es ist eine Zeichenfolgendarstellung von _id Feld).

Sie sollten es _id nennen oder Sie können es entfernen, die _id ist implizit da. Und dann verwenden Sie _id beim Erstellen eines neuen Objekts.

Beispiel:

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

var Person = new Schema({ 
    name:String 

},{ collection: 'customers' }); 
module.exports = mongoose.model('Person', Person); 

var p = new Person({ 
    _id:1, 
    name:"John" 
}); 

p.save(function(err,doc){ 
    if(err){ 
    console.log(err) 
} 
} 

oder Sie müssen nicht id schreiben, wird es implizit automatisch generierte

var p = new Person({ 
    name:"John" 
}); 

p.save(function(err,doc){ 
    if(err){ 
    console.log(err) 
} 
}