2016-12-29 3 views
-1

이것은 처음으로 질문하는 질문이며 기본적으로 답변을 찾는 마지막 수단입니다. 나는 자바 스크립트 멍청한 놈과 초보자 그래서 나와 함께 간단한 용어를 사용하십시오.nodejs에서 쿼리하는 방법은 무엇입니까?

그래서 문제가 있습니다. 쿼리 방법을 모른다. - 내가하는 모든 쿼리를 하나의 스크립트에 넣거나 다른 스크립트로 분할해야합니까? - 지금은 server.js가 있고 거기에 모든 코드를 넣습니다. 쿼리를 포함합니다. 그렇다면 어떻게해야하나요? - 또한 4와 같은 다른 번호를 쿼리하는 것과 같은 것이있는 경우에는 '110'에서 '4'로 수동으로 변경해야합니다. 아니면 어딘가에 입력 할 수 있습니까?

몇 가지 예는 다음과 같습니다 // 길이

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 // 길이 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. 자포자기 도움 남자

+0

잘 모르겠습니다. 모델링, 일반적인 node.js 프로젝트 디렉토리 구조 (모델, 컨트롤러, 경로, 구성 등)에 대해 묻고 있습니까? 검색어에 대해 –

+0

거기에 사용자가 레코드를 만들 것인지 말 것인지를 입력 할 수있는 방법이 있습니다. 예를 들어 레코드 번호 4를 표시하려면 터미널에 키를 입력해야합니다. 그렇지 않으면 수동으로 자바 스크립트로 돌아가서 length = "110"에서 length = "4"로 편집해야합니다. – Noobstudent

답변

0

당신은 이미 node.js가 서버를 만드는 데 사용된다는 것을 알고 있습니다. 따라서 데이터베이스를 쿼리 할 수있는 두 가지 방법이 있습니다.

1.A HTTP GET 데이터 (표준 방법)
를 조회 당신은 간단한 HTTP 서버를 작성하기위한 경로를 설정할 수 있습니다 당신이 노드에 익숙하기 때문에, 나는 두 가지를 나열거야 enter image description here

2.Using :

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')); 
}); 

당신은이 같은 컬 또는 우편 배달부를 사용하여 서버를 조회 할 수 있습니다 : 당신이 이해할 수 있도록 데이터의 유형을 받고 당신은 작은 파일을 작성 want.I've 명령 l 오프라인 인수 :
또한 조회 할 매개 변수를 전달하여 명령 줄 인수를 사용하여 그것에게 쉬운 방법을 할 수 있지만 덜 유연 : enter image description here

이 같은 명령 줄 인수가 파일을 실행하는 동안

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

패스

도움이 되었기를 바랍니다.

관련 문제