nodejs 向mongodB获取指定数目的数据
原理:通过向nodejs服务器端发送请求,nodejs 收到请求向mongodB读取五条数据,在控制台中打印出来:
nodejs段代码(新建一个文件server.js将以下代码复制其中):
var http = require("http");
var url = require("url");
var MongoClient = require('mongodb').MongoClient;
var i = 0;
var k = 5;
var flag=0;
http.createServer(function(request, response) {
if(flag == 0){
MongoClient.connect("mongodb://localhost:27017/test", function(err, db){
if(err) { return console.dir(err); }
var collection = db.collection('test');
for(i;i<k;i++){
collection.findOne(null, { skip: i }, function(err, item){
console.log(item);
});
}
k += 5;
});
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World" + i);
response.end();
flag =1
console.log('---------------------------');
}else if(flag == 1){
flag = 0;
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World" + i);
response.end();
}
}).listen(8888)
现在打开浏览器,输入以下地址:http://localhost:8888/ 如下图:
回车,查看命令行答应的日志:
可以看到前面五条数据已经获取了,刷新以下浏览器:
第六至十条数据意已经获取了。
注意,这个实验首先要创建一个有数据的数据库
以上方法可以是一个实验,但那样写并不好,但是却能给我们一些启发:
接下来还有一种方法,此方法采用 Mongoskin 模块(通过 npm install mongoskin 来获取此模块),代码如下:
var http = require("http");
var url = require("url");
var mongo = require("mongoskin");
var flag = 0;
var i=0;
http.createServer(function(request, response) {
if(flag == 0){
mongo.db('localhost:27017/test').collection('test').find({},{limit: 5,skip :i*5}).toArray(function (err, items) {
console.dir(items);
})
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
flag = 1;
}else if(flag == 1){
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
flag = 0;
i++;
}
}).listen(8888)
代开浏览器输入地址:http://localhost:8888/ 运行结果:
刷新:
第六至十条数据出来了。
mongoskin参考地址:
https://github.com/kissjs/node-mongoskin#quickstart-1
https://github.com/christkv/node-mongodb-native/blob/master/docs/queries.md
http://stackoverflow.com/questions/10929443/nodejs-mongodb-getting-data-from-collection-with-findone