MongoDB自动断开连接,无法使用Nodejs获取记录

时间:2017-07-02 03:17:20

标签: node.js mongodb

我是NodeJS和MongoDB的新手。我想从HTML获取用户输入并作为查询传递给MongoDB。我根据要求索引了MongoDB。我对此代码感到困惑。每当我运行server.js时,我都会收到错误,MongoDB会自动断开连接。请帮我。

//user_query.js

var http = require('http');
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/newDB";
var express = require('express');
var app     = express();
var bodyParser = require('body-parser');

app.use(bodyParser.urlencoded({ extended: true })); 

var varName, search;

var name = app.post('/product_search', function(req, res, callback) {
    res.send('Searching for "' + req.body.query + '".');
    search = req.body.query;
    callback(search);
});

app.listen(8080, function() {
  console.log('Server running at http://127.0.0.1:8080/');
});

module.exports = { varName: search };


//search.js
var http = require('http');
var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/newDB";
var express = require('express');
var app     = express();
var user_query = require('./user_query');

//console.log("Hello: "+user_query.varName);

MongoClient.connect(url, function(err, db) {
    if (err) throw err;

    db.collection("cellPhones").find({$text:{$search: user_query.varName}}).toArray(function(err, result) {
        if (err) throw err;     
        console.log(result);     
    });  
    db.close(); 
});`enter code here`

1 个答案:

答案 0 :(得分:0)

当你说callback(search)时,基本上是next(search)你最终会在路由器中使用你的处理程序并将一些数据传递给中间件。

根据nodejs约定,回调中的第一个参数是 - error。所以,你做的是 - 抛出错误。 这是第一个问题。所以你应该这样解决它:

next(null, search);

然后,就您选择此类方法(使用中间件)而言 - 您必须在某处添加服务此查询中间件,这将查询数据库并响应浏览器。非常划伤(在您添加路线后):

app.use(function(err, req, res) {
  // query db
  // send result to the res.send();
});