2017-03-03 105 views
0

我正在嘗試做一個簡單的任務。 首先,在客戶端,我將數據發送到服務器,然後將這些數據插入到我的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插入和收集? 如果是這樣,有人可以舉一個例子或解釋我如何使用它?

+0

所以你只是計算所有插入的記錄? – Remario

+0

是的,這就是我現在要做的,但不僅如此,我希望能夠使用所有的mongodb插入,創建,更新,刪除或查詢功能。 mongodb-autoincrement可能嗎? – user3525616

回答

1

計數函數可以工作,但是是異步函數並需要回調。 這裏的修復:

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

+0

謝謝,然後通過添加一個回調我也可以使用collection.find(),.insertMany(),remove()等? – user3525616

1

https://www.npmjs.com/package/mongodb-autoincrement考慮使用。它保持所有插入文檔的軌道。另外它有一個方便的功能來獲得下一個計數。例如,假設您插入了兩條記錄。如果你打電話給下一個計數,它會顯示3.那麼插入的總文件調用獲得下一個計數 - 1.有道理?

對不起,這裏是正確的。 https://www.npmjs.com/package/mongoose-auto-increment

+0

使用貓鼬自動增量 – Remario

+0

請嘗試... – Remario

+0

是否相應地先生? – Remario