2016-07-01 15 views
0

läuft mongodb Funktionen in node.js

forms.create is not a function 
 

 
TypeError: forms.create is not a function 
 
    at G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\routes\formrouter.js:25:10 
 
    at Layer.handle [as handle_request] (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\layer.js:95:5) 
 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\route.js:131:13) 
 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\route.js:125:14) 
 
    at Route.dispatch (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\route.js:112:3) 
 
    at Layer.handle [as handle_request] (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\layer.js:95:5) 
 
    at G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:277:22 
 
    at Function.process_params (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:330:12) 
 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:271:10) 
 
    at jsonParser (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\body-parser\lib\types\json.js:94:7) 
 
    at Layer.handle [as handle_request] (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\layer.js:95:5) 
 
    at trim_prefix (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:312:13) 
 
    at G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:280:7 
 
    at Function.process_params (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:330:12) 
 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:271:10) 
 
    at Function.handle (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:176:3)

var mongoose = require('mongoose'), 
 
    assert = require('assert'); 
 
var response = require ('response'); 
 
var forms = require('../models/forms-1'); 
 

 
// Connection URL 
 
var url = 'mongodb://localhost:27017/ezySchooling'; 
 
mongoose.connect(url); 
 
var db = mongoose.connection; 
 
db.on('error', console.error.bind(console, 'connection error:')); 
 
db.once('open', function() { 
 
    // we're connected! 
 
    console.log("Connected correctly to server"); 
 

 
    // create a new user 
 
    var newform = forms({ 
 
     firstname: 'may', 
 
     lastname : 'apo', 
 
     dob : 25-05-1996, 
 
     address : 'vaishali', 
 
     
 
     phonenumber : 8447872060 
 
    }); 
 

 
    // save the user 
 
    newform.save(function (err) { 
 
     if (err) throw err; 
 
     console.log('form created!'); 
 
     
 

 
     // get all the users 
 
     forms.find({}, function (err, forms) { 
 
      if (err) throw err; 
 

 
      // object of all the users 
 
      console.log(forms); 
 
         db.collection('forms').drop(function() { 
 
       db.close(); 
 
      }); 
 
     }); 
 
    }); 
 
});

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

 
// create a schema 
 
var formSchema = new Schema({ 
 
    firstname: { 
 
     type: String, 
 
     //required: true, 
 
     unique: true 
 

 
    }, 
 
    lastname: { 
 
     type: String, 
 
     //required: true, 
 
     unique: true 
 
    }, 
 

 
    dob: { 
 
     type: Date, 
 
     required: true 
 
    }, 
 
    address: { 
 
     type: String, 
 
     required: true 
 
    }, 
 
     phonenumber: { 
 
     type:Number , 
 
     required: true 
 
    } 
 
    
 
    //timestamps: true 
 
}); 
 

 
// the schema is useless so far 
 
// we need to create a model using it 
 
var forms = mongoose.model('form', formSchema); 
 

 
// make this available to our Node applications 
 
module.exports = forms;

Ich bin mit Rest-API mit mongodb und m ongoose, ich habe alle relevanten Änderungen an app.js vorgenommen und kann immer noch keine Funktion von mongodb in node.js ausführen. Ich habe App.js und Router-Datei, die Form-Router mit dieser Abfrage ist angehängt.

forms.Create is not a function 

TypeError: forms.Create is not a function 
    at G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\routes\formrouter.js:26:10 
    at Layer.handle [as handle_request] (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\layer.js:95:5) 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\route.js:131:13) 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\route.js:125:14) 
    at Route.dispatch (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\route.js:112:3) 
    at Layer.handle [as handle_request] (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\layer.js:95:5) 
    at G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:277:22 
    at Function.process_params (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:330:12) 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:271:10) 
    at jsonParser (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\body-parser\lib\types\json.js:94:7) 
    at Layer.handle [as handle_request] (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\layer.js:95:5) 
    at trim_prefix (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:312:13) 
    at G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:280:7 
    at Function.process_params (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:330:12) 
    at next (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:271:10) 
    at Function.handle (G:\EZY SCHOOLING BACKEND\expresswithmongodb\chalega\rest-server\node_modules\express\lib\router\index.js:176:3) 

var express = require('express'); 
 
var path = require('path'); 
 
var favicon = require('serve-favicon'); 
 
var logger = require('morgan'); 
 
var cookieParser = require('cookie-parser'); 
 
var bodyParser = require('body-parser'); 
 
var mongoose = require('mongoose'); 
 
var response=require ('response'); 
 

 
var url = 'mongodb://localhost:27017/conFusion'; 
 
mongoose.connect(url);; 
 
var db= mongoose.connection; 
 
//var forms = mongoose.model('forms', formSchema); 
 
db.on('error',console.error.bind(console,'connection error:')); 
 
db.once('open',function(){ 
 
    console.log('connected to server'); 
 
}); 
 
var routes = require('./routes/index'); 
 
var users = require('./routes/users'); 
 
var tr= require('./routes/tr'); 
 
var fp=require('./routes/fp'); 
 
var schools =require('./routes/schools'); 
 
var caf = require('./routes/caf'); 
 
var login= require('./routes/login'); 
 
var formRouter = require('./routes/formRouter'); 
 
//var logRouter = require('./routes/logiRouter'); 
 
//var signRouter = require('./routes/signuRouter'); 
 

 

 

 
var app = express(); 
 

 
// view engine setup 
 
app.set('views', path.join(__dirname, 'views')); 
 
app.set('view engine', 'jade'); 
 

 

 
// uncomment after placing your favicon in /public 
 
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico'))); 
 
app.use(logger('dev')); 
 
app.use(bodyParser.json()); 
 
app.use(bodyParser.urlencoded({ extended: false })); 
 
app.use(cookieParser()); 
 
app.use(express.static(path.join(__dirname, 'public'))); 
 

 
app.use('/', routes); 
 
app.use('/users', users); 
 
app.use('/tr',tr); 
 
app.use('/fp',fp); 
 
app.use('/schools',schools); 
 
app.use('/caf',caf); 
 
app.use('/login',login); 
 
//app.use('/logs',logRouter); 
 
//app.use('/signs',signRouter); 
 
app.use('/forms',formRouter); 
 

 
// catch 404 and forward to error handler 
 
app.use(function(req, res, next) { 
 
    var err = new Error('Not Found'); 
 
    err.status = 404; 
 
    next(err); 
 
}); 
 

 
// error handlers 
 

 
// development error handler 
 
// will print stacktrace 
 
if (app.get('env') === 'development') { 
 
    app.use(function(err, req, res, next) { 
 
    res.status(err.status || 500); 
 
    res.render('error', { 
 
     message: err.message, 
 
     error: err 
 
    }); 
 
    }); 
 
} 
 

 
// production error handler 
 
// no stacktraces leaked to user 
 
app.use(function(err, req, res, next) { 
 
    res.status(err.status || 500); 
 
    res.render('error', { 
 
    message: err.message, 
 
    error: {} 
 
    }); 
 
}); 
 

 

 
module.exports = app;

var express = require('express'); 
 
var bodyParser = require('body-parser'); 
 
var mongoose = require('mongoose'); 
 
var response = require('response'); 
 
var forms = require('../models/forms'); 
 
var multer = require('multer'); 
 
var assert = require('assert'); 
 
mongoclient= require('mongodb').mongoclient; 
 
var mongodb = require('mongodb'); 
 

 

 
var formRouter = express.Router(); 
 
formRouter.use(bodyParser.json()); 
 

 
formRouter.route('/') 
 
.get(function (req, res, next) { 
 
    // forms.find({}, function (err, form) { 
 
     //if (err) throw err; 
 
     //res.json(form); 
 
      res.render('caf', { title: 'Ezyschooling' }); 
 
     // res.end('chalega'); 
 
    //}); 
 
}) 
 

 
.post(function (req, res, next) { 
 
    forms.Create(req.body, function (err, form) { 
 
     if (err) throw err; 
 
     console.log('formcreated!'); 
 
     var id = form._id; 
 

 
     res.writeHead(200, { 
 
      'Content-Type': 'text/plain' 
 
     }); 
 
     res.end('Added the formwith id: ' + id); 
 
    }); 
 
}) 
 

 
.delete(function (req, res, next) { 
 
    forms.remove({}, function (err, resp) { 
 
     if (err) throw err; 
 
     res.json(resp); 
 
    }); 
 
}); 
 

 
formRouter.route('/:formId') 
 
.get(function (req, res, next) { 
 
    forms.findById(req.params.formId, function (err, form) { 
 
     if (err) throw err; 
 
     res.json(form); 
 
    }); 
 
}) 
 

 
.put(function (req, res, next) { 
 
    forms.findByIdAndUpdate(req.params.formId, { 
 
     $set: req.body 
 
    }, { 
 
     new: true 
 
    }, function (err, form) { 
 
     if (err) throw err; 
 
     res.json(form); 
 
    }); 
 
}) 
 

 
.delete(function (req, res, next) { 
 
    forms.findByIdAndRemove(req.params.formId, function (err, resp) {  if (err) throw err; 
 
     res.json(resp); 
 
    }); 
 
}); 
 
module.exports = formRouter;

+0

können Sie den Inhalt in models/forms.js veröffentlichen? Das scheint das Problem zu sein. Ich schätze, Sie haben entweder überhaupt keine Create-Funktion exportiert, oder Sie haben es falsch geschrieben oder möglicherweise Create erstellt. – Paul

+0

Ich habe forms.js und forms-1.js in der obigen Abfrage hinzugefügt, bitte sehen Sie es sich an und ich weiß auch nicht, wie man create function exportiert? können Sie bitte auch in dieser Hinsicht helfen –

Antwort

0

Ok, ja, wenn "Formulare" Ihr Mungo-Modell ist, dann ist die korrekte Syntax ist forms.create (... .) mit einem Kleinbuchstaben c.

* UPDATE * Ok, von Ihren Kommentaren bin ich immer noch nicht sicher über Ihre App-Struktur; Dinge sind eine Berührung, die die Art, wie du sie hast, verwirrt.

In jedem Fall, was Sie wollen in Ihrem Router haben, ist das Modell, dass Mungo produziert. Sie können es auf diese Weise tun:

var Form = mongoose.model('form'); // note that this assumes you've already called require on your ./models/forms.js file to run it and get the schema into mongoose 

formRouter.route('/') 
.post(function(req,res,next){ 
    Form.create(/* your args here and callback and stuff */); 
}); 
+0

Ich habe die Syntax geändert und machte es klein c und immer noch nicht ausgeführt, ich habe wieder den Fehler in meiner Abfrage oben hinzugefügt, forms-1.js ist die Datei, in der wir das Schema definiert haben und forms.js ist die Datei, in der ich eine Mungoverbindung hergestellt habe –