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;

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