Я новичок в nodejs, но вчера вечером мне удалось кое-что поработать с mongodb на IIS-сервере с iisnode.:)
Но я удивляюсь одной вещи, которая кажется ошибкой обновления или чем-то еще.Когда я перехожу к «http://localhost/mongo.js"» в моем браузере, результаты будут просто «[]» в первый раз. Если я нажму «Обновить», результаты будут такими, как я ожидал (массив json с людьми). Не делайте этогокажется неправильным?
Допустим, теперь я делаю это с помощью запроса "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);