使用socket.io-mongodb获取计数集合

时间:2017-03-03 23:42:44

标签: javascript node.js mongodb socket.io

我正在尝试做一个简单的任务。 首先,在客户端,我将数据发送到服务器,然后我将这些数据插入到我的mongodb数据库中。 然后我尝试从我的数据库中获取客户数。

var express = require('express');
var MONGO_URL = "mongodb://localhost:27017/mydatabase";
var app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
mongo = require('mongodb').MongoClient,
fs = require('fs');
var countUserSuscribed =0;

//here i insert data
/* Connection events */
io.on('connection', function (client) {
console.log("User connected");
    client.on('InsertNewUser', function (newUser) {
        console.log("we ar in InsertNewUser event");
        //////////////////////////////////////////////////////////
        mongo.connect(MONGO_URL, function (err, db) {
            console.log("we are connected to mongodb");
            var Users = db.collection('User');
            console.log("on crée la collection et on fait l'ajout");
            Users.insert({ player: myP }, function (err, o) {
                if (err) { console.warn(err.message); }
                else { console.log("user inserted into db: user"); }
            });
        });
    })
});

//GET COUNT USER
console.log("here we get count user");
mongo.connect(MONGO_URL, function (err, db) {
countUserSuscribed = Users.count();
console.log("we got " + countUserSuscribed + " user in mongoDB");

});

使用此代码我可以创建集合并插入文档但计数功能不起作用,我没有找到关于npm文档的太多解释。 是否可以使用其他mongodb函数而不是使用socket.io-mongodb进行插入和收集? 如果是,有人可以举例或解释我如何使用它吗?

2 个答案:

答案 0 :(得分:1)

https://www.npmjs.com/package/mongodb-autoincrement考虑​​使用它。它保留所有插入文档的跟踪。此外,它还有一个方便的功能,以获得下一个计数。例子让我们说你插入了两条记录。如果你打电话给下一个计数,它将显示3.因此,要获得插入的总文件,请拨打下一个计数 - 1.有意义吗?

对不起,这是正确的。 https://www.npmjs.com/package/mongoose-auto-increment

答案 1 :(得分:1)

count函数有效,但是是异步函数并进行回调。 这是修复:

countUserSuscribed = Users.count(function (err,c) { console.log(c) });