2017-12-30 46 views
1

ich zur Zeit eine API MongoDB und NodeJS am Bau verwendet wird, und ich habe von Code den folgenden Block eine POST-Anforderung zu tun:Der Versuch, mehrere Dokumente/Datensätze in MongoDB über eine POST-Anfrage einfügen mit NodeJS

// '/v1/restaurant/add' - Create 
    api.post('/add', (req, res) => { 
    let newRestaurant = new Restaurant(); 
    newRestaurant.name = req.body.name; 

    newRestaurant.save(err => { 
     if (err) { 
     res.send(err); 
     } 
     res.json({ message: 'Restaurant saved successfully' }); 
    }); 
    }); 

Was ich tun möchte, ist ein Massen-POST (dh mehrere Dokumente/Datensätze gleichzeitig in meine MongoDB einzufügen). Wie würde ich meinen Code ändern, um dies zu erreichen?

Ich entschuldige mich, aber ich bin sehr neu in JavaScript/NodeJS.

Antwort

2

Es gibt zwei Möglichkeiten, es mit Mongoose zu tun.

  1. Model.create() - es nimmt ein Array von Objekten in der Datenbank und macht so viele Anfragen an die Datenbank als die Anzahl der Elemente eingefügt werden eingefügt werden. Es wird ein Leistungseinbruch sein, wenn Sie viele Datensätze einfügen möchten, aber Sie profitieren von Mongoose, der die save() Methode für jeden der Datensätze aufruft, was bedeutet, dass Ihre pre und post Middleware-Funktionen ausgelöst werden. Sie können mehr über die Methode here lesen.

  2. Model.insertMany() - es akzeptiert auch ein Array von einzufügenden Objekten, tut dies jedoch in einer einzigen Datenbankoperation. Sie erhalten eine bessere Leistung, aber das Problem ist, dass die save()-Funktion für keines der Elemente ausgeführt wird, die Sie einfügen möchten (Validierungen werden weiterhin ausgeführt, bevor die Abfrage gesendet wird). Sie können mehr über insertMany()here lesen.

Persönlich würde ich create() verwenden, wenn ich weniger als 50 Elemente auf einmal einfügen und wenn meine Modelle sind kompliziert und haben pre/post-save Middleware-Funktionen mit ihnen verbunden.

Ich würde insertMany() verwenden, wenn meine Modelle nicht kompliziert sind und ich regelmäßig mehr als 50 Elemente gleichzeitig einfügen muss.

Verwandte Themen