Я новичок в nodejs, но вчера я получил кое-что, чтобы работать с mongodb на сервере IIS с iisnode. :)nodejs & mongodb обновить ошибку?
Но я задаюсь вопросом об одной вещи, которая кажется обновленной ошибкой или чем-то еще. Когда я перехожу в «http: //localhost/mongo.js», в моем браузере результаты будут просто «[]» в первый раз. Если я удалю обновление, результаты будут такими, какие я ожидал (массив json с людьми). Dosen't это кажется неправильным?
Скажем, теперь я делаю это с запросом «http: //localhost/mongo.js? Name = Daniel» и получаю всех людей с именем Даниэль. Ответ в первый раз будет «все люди», потому что это то, о чем мы просили выше, и когда я нажму обновить, будут представлены все лица по имени Даниэль. Почему это происходит? Кажется, что сервер кэшировал запрос, который я сделал, и я не хочу каждый раз обновлять его, чтобы получить правильные результаты.
Это мой код, я использую: (также доступен здесь http://pastebin.com/PnVfrQmh)
/* GLOBALS
----------------------------------------------------------------------*/
var rdata = [];
/* SERVER SETTINGS
----------------------------------------------------------------------*/
//load http module to ceate an http server.
var http = require('http');
var url = require('url');
//configure to respond http server with message
http.createServer(function (request, response) {
//request name parameter
var url_parts = url.parse(request.url, true);
var query = url_parts.query;
//do the mongo
var mongo = require('mongodb');
var db = new mongo.Db('nodedb', new mongo.Server('localhost', 27017, {}), {});
db.open(function() {
db.collection('Persons', function(err, collection) {
var cursor = collection.find(query);
cursor.each(function(err, doc) {
if(doc) {
rdata.push(doc);
}
});
});
});
//write what type of response
response.writeHead(200, {'Content-Type': 'application/json;charset=utf-8'});
//return data json array
response.end(JSON.stringify(rdata));
//clear rdata
rdata = [];
}).listen(process.env.PORT);