2016-10-15 7 views
0

Ich bin neu bei Nodejs und Mongodb. Ich versuche, newClass in die Klassensammlung einzufügen. Mit dieser Funktion scheint alles zu funktionieren. Es gibt einen Fehler von 500 und speichert die Klasse nicht.In eine Mongodb-Sammlung einfügen (Newbie)

Ich überprüfte die mongodb docs und es schien richtig. Kann mir bitte jemand in die richtige Richtung zeigen?

Routen

Class.createNewClass(newClass, function(err){ 
    if (err){ 
     console.log(err); 
     res.send(err); 
    } else { 
     console.log('Class saved.") 
    } 
}) 

Modell

module.exports.createNewClass = function(newClass, callback){ 
    Class.insert({newClass}, callback); 
} 

Antwort

0

Es gibt einen Syntaxfehler in ihrer createNewClass Funktion, die unter der Annahme newClass Variable ein Objekt ist, das alle Schlüssel enthält: Sie Wert-Paare‘ Um das neue Dokument zu speichern, sollten Sie die geschweiften Klammern entfernen:

module.exports.createNewClass = function(newClass, callback){ 
    Class.insert(newClass, callback); 
} 

Das heißt, der Code, den Sie für Ihre Routen gepostet haben, sieht nicht sehr nach einer Route zu mir aus, daher könnte es andere Fehler geben, die Ihre Transkription nicht aufdeckt.

0

Ich bin nicht wirklich klar über die Gesamtstruktur Ihrer App, aber hier ist eine sehr einfache Express-App, die neue Klassen in die Datenbank einfügen kann.

var express = require('express'); 
var bodyParser = require('body-parser'); 

var mongodb = require('mongodb'); 
var app = express(); 
app.use(bodyParser.json()); 

var MongoClient = require('mongodb').MongoClient; 
var db; 

// Initialize connection once 
MongoClient.connect("mongodb://localhost:27017/school", function(err, database) { 
    if(err) throw err; 

    db = database; 

    // Start the application after the database connection is ready 
    app.listen(3000); 
    console.log("Listening on port 3000"); 
}); 

app.post('/class', function(req,res) { 
    var collection = db.collection('classes'); 
    var newClass = req.body; 
    console.log(req.body); 
    collection.insert(newClass); 
    res.json(newClass); 
}); 
0

In Ihrem Modell ändern Sie es zu:

module.exports.createNewClass = function(newClass, callback){ 
     Class.collection.insert(newClass, callback); 
}; 

Überprüfen Sie, ob "Klasse" sollte Schema Modellobjekt sein.

module.exports.createNewClass = function(newClass, callback){ 
     new Class(newClass).save(callback); 
    }; 

Es ist die grundlegende Mungo-Weg. In Mungo verwenden wir "Einfügen" für mehrere Dokumente, aber Sie können auch die Einfügung für ein einzelnes Dokument verwenden.