繁体   English   中英

在node.js中运行mongodb函数

[英]running mongodb functions 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; 

我正在使用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; 

好的,是的,如果“ forms”是您的猫鼬模型,则正确的语法是带有小写c的forms.create(....)。

*更新*好吧,根据您的评论,我仍然不确定您的应用程序结构; 事物使您的使用方式变得混乱。

无论如何,您在路由器中拥有的是猫鼬生产的模型。 您可以这样操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM