我不能通过nodejs在mongodb中插入数据。 请在下面find错误的日志

我无法连接到mongodb并将数据插入到数据库中。 (/ usr / local / lib / node_modules / npm / node_modules / npm lifecycle / index.js:280:16)verbose stack at emitTwo( Event.js:125:13)EventEmitter.emit上的详细堆栈(events.js:213:7)详细堆栈位于ChildProcess.node ./bin/www错误退出状态1错误在firstexpressproject@0.0.0启动脚本中失败。 错误这可能不是npm的问题。 上面可能还有额外的日志输出。 verbose exit [1,true]

这里是代码::

var express = require('express'); var mongo=require('mongodb').MongoClient; var assert=require('assert'); var router = express.Router(); var url='mongodb://127.0.0.1:27017/test'; /* GET home page. */ router.get('/', function(req, res, next) { res.render('index'); }); router.post('/submit',function(req,res,next){ req.check('email','Invalid email Address').isEmail(); req.check('password','Password is invalid').isLength({min:4}).equals(req.body.confirmPassword); var errors=req.validationErrors(); if(errors) { req.session.errors=errors; req.session.success=false; } else { req.session.success=true; } res.redirect('/'); }); router.post('/insert',function(req,res,next) { //res.redirect('index'); var item = { title:req.body.title, content:req.body.content, author:req.body.author }; mongo.connect(url,function(error,db) { assert.equal(null,err); db.collection('user-data').insertOne(item,function(err,result){ assert.equal(null,err); console.log('Data inserted successfully'); db.close(); }); }); res.redirect('/'); }); router.get('/get-data',function(req,res,next) { var resultArray=[]; mongo.connect(url,function(err,db) { assert.equal(null,err); var cursor=db.collection('user-data').find(); cursor.forEach(function(doc,err) { assert.equal(null,err); resultArray.push(doc); },function() { db.close(); res.render('index',{items:resultArray}); }); }); }); module.exports = router; 

我想你错过了一个参数名称:

 router.post('/insert',function(req,res,next) { //res.redirect('index'); var item = { title:req.body.title, content:req.body.content, author:req.body.author }; mongo.connect(url,function(error,db) { assert.equal(null,err); db.collection('user-data').insertOne(item,function(err,result){ assert.equal(null,err); console.log('Data inserted successfully'); db.close(); }); }); res.redirect('/'); }); 

你主张'err'是null,但是没有'err'的范围,你应该:

 router.post('/insert',function(req,res,next) { //res.redirect('index'); var item = { title:req.body.title, content:req.body.content, author:req.body.author }; mongo.connect(url,function(error,db) { assert.equal(null,error); // fixed here db.collection('user-data').insertOne(item,function(err,result){ assert.equal(null,err); console.log('Data inserted successfully'); db.close(); }); }); res.redirect('/'); });