J'ai un tableau de noms:Comment enregistrer correctement un tableau d'objets avec mongoose + nodejs?
noms var = [ "Kelley", "Amy", "Mark"]
En supposant personne est juste un modèle Mongoose pour nodejs ... Je veux sauver chaque le nom comme un document dans MongoDB ce qui suit:
for(var i = 0; i < names.length; i++) {
name_now = names[i];
Person.findOne({ name: name_now},
function(err, doc) {
if(!err && !doc) {
var personDoc = new PersonDoc();
personDoc.name = name_now;
console.log(personDoc.name);
personDoc.save(function(err) {});
} else if(!err) {
console.log("Person is in the system");
} else {
console.log("ERROR: " + err);
}
}
)
}
J'ai des problèmes que je garde geting un « programme création d'erreur: MongoError: E11000 dupliquer l'index d'erreur clé: ..... clé dup: {: » Marque"}". Et il semble qu'il essaie d'insérer "Mark" (le dernier élément de la liste) 3 fois par opposition à chacun des noms de la liste. Lorsque j'essaie d'imprimer le nom de la personne en cours dans la boucle (avec le fichier console.log (personDoc.name);), j'obtiens "Mark" 3 fois ... et il semble qu'il ne soit sauvegardé "Mark" dans la base de données et personne d'autre ... quelle est la bonne façon de faire face à cela?
Cela fonctionne très bien, merci! Mais je veux après que la boucle for s'exécute, dans la même fonction pour faire un Person.find ({}) pour obtenir tous les documents après insertion. Comment puis-je m'assurer que la boucle se termine avant que j'effectue le Person.find ({})? – Rolando
@Damascusi Il est préférable de publier cette question comme une question distincte car elle est non triviale. Faites quelques recherches d'abord car c'est un cas courant. – JohnnyHK