在node.js中运行mongodb函数

时间:2016-07-01 19:10:55

标签: 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;




我正在使用mongodb和mongoose运行rest API,我已对app.js进行了所有相关更改,但仍然无法在node.js中运行mongodb的任何功能。我已经附加了app.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: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;




1 个答案:

答案 0 :(得分:0)

好的,是的,如果"形式"是你的猫鼬模型,然后正确的语法是forms.create(....)与小写c。

*更新* 好的,根据您的评论,我仍然不确定您的应用结构;事情让你感到困惑。

在任何情况下,你想要在你的路由器中拥有的是mongoose产生的模型。你可以这样做:

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 */);
});