2017-07-03 4 views
0

Ich habe Probleme mit mongoDB/mongoose und node.js. Ich bin SQL gewohnt, und mongoDB ist ... schwer! Hier ist mein Schema:MongoDB und Mungo: wie man ein Objekt hinzufügt, wenn es nicht schon existiert

var mongoose = erfordern ('mongoose');

mongoose.Promise = global.Promise;

var itemSchema= mongoose.Schema({ 

    item_info  : { 
     user_id  : Number, 
     location  : String, 
     item_id  : Number, 
     title  : String 
    }, 
    item_hist  : { 
     user_id  : Number, 
     location  : String, 
     item_id  : Number, 
     founddate : String 
     } 
}); 
module.exports = mongoose.model('item', itemSchema); 

Und das kann ich ein neues Element hinzufügen, indem Sie:

var item= require('./app/models/item'); 
    var item= new item(); 
    item.item_info.user_id  = 12345; 
    item.item_info.location  = 'This address'; 
    item.item_info.item_id  = 4444; 
    item.item_info.title  = 'New item'; 
    item.save(function(err) 
    { 
     if (err) throw err; 
    }); 

Was ich will in der Lage sein zu tun, sagen: „suchen Sie nach einem Artikel mit item_info.item_id 5555. wenn es existiert, nichts tun. Wenn es nicht existiert, dann füge es zur Datenbank hinzu. " Ich habe so viel mongodb und mongoose Dokumentation durchgelesen, aber zwischen Punktnotation und Zugriff durch nodejs anstelle der Befehlszeile mongodb kann ich immer noch nicht herausfinden, wie das geht. SQL schien so viel einfacher!

+0

haben Sie versucht, mit {Upsert: true} in Optionen? –

+0

Nein - ich weiß nichts davon – garson

Antwort

0

Nur diese nutzen -

var query = { user_id: 12345, location: "This address", item_id: 4444, title: "New item" }, 

     options = { upsert: true }; 

    Model.findOneAndUpdate(query.item_id, query, options, function(error, result) { 
    if (error) return; 

    // do something with the document 
}); 
+0

Vielen Dank, aber es sagt, es kann nicht finden "Model"? Entschuldigung, ich bin neu und nicht sicher, wie man die richtigen Referenzen macht. – garson

+0

@garson Entschuldigung, dieses "Modell" ist das importierte Schema. Ich denke du hast es als "Item" importiert. –

+0

danke. das hat funktioniert. Mir wurde klar, dass ich auch eine Art separates Problem habe, aber ich werde dafür eine separate Frage stellen. – garson

Verwandte Themen