我是nodejs的新手,但是昨晚我在iisnode的IIS服务器上用mongodb获得了一些东西。 :)nodejs&mongodb刷新错误?
但我想知道一件事似乎是一个刷新错误或什么的。 当我在浏览器中访问“http://localhost/mongo.js”时,结果第一次只是“[]”。如果我刷新结果将是我所期望的(与人有关的json数组)。 Dosen't这似乎错了?
假设我现在用一个查询“http://localhost/mongo.js?name = Daniel”来完成它,并获取名称为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);