2017-03-03 4 views
0

Ich versuche, eine einfache Aufgabe zu machen. An erster Stelle, auf der Clientseite, sende ich Daten zum Server und dann füge ich diese Daten in meine mongodb Datenbank ein. Dann versuche ich, die Anzahl der Clients aus meiner Datenbank zu ermitteln.Zählen Sammlung mit 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"); 

}); 

Mit diesem Code kann ich Sammlungen erstellen und Dokumente einfügen, aber die Count-Funktion funktioniert nicht, und ich habe nicht viele Erklärungen auf npm Dokumentation. Ist es möglich, andere mongodb-Funktionen als Einfügen und Sammeln mit socket.io-mongodb zu verwenden? Wenn ja, kann jemand ein Beispiel geben oder mir erklären, wie man es benutzt?

+0

Sie sind also nur zu zählen alle eingefügten Datensätze? – Remario

+0

Ja, das möchte ich jetzt machen, aber nicht nur das, ich würde gerne alle mongodb einfügen, erstellen, aktualisieren, löschen oder abfragen können. Ist es mit mongodb-autoincrement möglich? – user3525616

Antwort

1

Die Zählfunktion funktioniert, aber ist async Funktion und nimmt einen Rückruf. hier ist das Update:

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

+0

Danke, und dann durch Hinzufügen eines Callbacks kann ich auch collection.find(), .insertMany(), remove(), etc? – user3525616

1

https://www.npmjs.com/package/mongodb-autoincrement verwenden Sie das. Es speichert alle eingefügten Dokumente. Plus es hat eine praktische Funktion, um die nächste Zählung zu bekommen. Nehmen wir an, Sie haben zwei Datensätze eingefügt. Wenn Sie die nächste Zählung aufrufen, wird es 3 anzeigen. Damit die Gesamtdokumente eingefügt werden, rufen Sie die nächste Zählung auf - 1. Sinn machen?

Entschuldigung hier ist die richtige. https://www.npmjs.com/package/mongoose-auto-increment

+0

Verwenden Sie mongoose auto inkrement – Remario

+0

Bitte versuchen Sie es ... – Remario

+0

Hat es entsprechend Sir? – Remario