如何在nodejs中查询?

时间:2016-12-29 02:47:15

标签: javascript node.js mongodb

这是我第一次提问,这基本上是我找到答案的最后手段。我是一个菜鸟和初学者在javascript所以请使用简单的条款与我。

所以我有一个问题。我不知道如何查询。 - 像我一样,我将所有查询都放在一个脚本中,或者我必须将它们分成不同的脚本。 - 现在,我有一个server.js,我把所有代码放在那里。包括查询。那么我如何只运行其中一个。 - 如果有这样的事情让我查询另一个数字,如4.我是否必须回到脚本手动从'110'更改为'4'或者我可以在某处输入它。

一些例子是: //长度为110

db.collection.find({length: "110"}, function(err, collection) {
  if( err || !collection) console.log("No collections with 110 in length");
  else collection.forEach( function(length) {
    console.log(length);
  } );
});

//显示长度为110且长度为340的记录

var length = ['110', '340']
length = length.join('|');
var re = new RegExp(length, 'i')
db.collection.find({length:{$regex: re}}, function(err, collection) {
  if( err || !collection ) console.log("User not found");
  else collection.forEach (function(length){
   console.log(length);
 });
});

我如何查询只在mongodb中运行其中一个。帮助很多人帮助

1 个答案:

答案 0 :(得分:0)

您已经知道node.js用于制作服务器。因此,有两种方法可以查询数据库。由于您是节点的新手,我将列出两种方式:

1.用于查询数据的http GET(标准方式)
您可以编写一个简单的http服务器并设置获取所需数据类型的路径。我已经编写了一个小文件,以便您可以理解:

var express = require('express');
var http = require('http');
var app = express();
var bodyParser = require('body-parser');

// Db settings
var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;

var url = 'mongodb://localhost:27017/my_database_name';

function getConnection(url, callback) {
  MongoClient.connect(url, function(dbErr, dbRes) {
    if(dbErr) {
      return callback(err, null);
    }
    callback(null, dbRes);
  });
}

// Configure app to use bodyparser
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
var port = process.env.PORT || 7013;
app.set('port', port);

app.use(function(req, res, next) {
  console.log(req.ip+ ":"+port + req.url + " "+req.method);
  next();
});

app.get('/getCityData', function(req, res, next) {
  var cityName = req.query.city;

  getConnection(url, function(conErr, db) {
    if(conErr) {
      return res.send("ERROR IN GETTING connection");
    }

    var cityCollection = db.collection('cities');
    cityCollection.find({"city":cityName}).toArray(function(err, result) {
      if(err) return res.send("error in querying data");

      db.close();
      res.send(result);
    });
  });
});

var httpServer = http.createServer(app).listen(port, function() {
  console.log("Express server listening on port "+app.get('port'));
});

您可以使用curl或postman查询服务器,如下所示: enter image description here

2.使用命令行参数:
您也可以通过将参数传递给查询来使用命令行参数轻松实现,但它的灵活性较低:

var mongodb = require('mongodb');
var MongoClient = mongodb.MongoClient;

var url = 'mongodb://localhost:27017/my_database_name';

function getConnection(url, callback) {
  MongoClient.connect(url, function(dbErr, dbRes) {
    if(dbErr) {
      return callback(err, null);
    }
    callback(null, dbRes);
  });
}

var cityName = process.argv[2]; // that's the argument you'd receive
getConnection(url, function(conErr, db) {
  if(conErr) {
    return res.send("ERROR IN GETTING connection");
  }

  var cityCollection = db.collection('cities');
  cityCollection.find({"city":cityName}).toArray(function(err, result) {
    if(err) return res.send("error in querying data");

    db.close();
    console.log(result);
  });
});

在执行文件时传递这样的命令行参数:enter image description here

我希望它有所帮助