t.js 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. var MongoClient = require('./').MongoClient
  2. , assert = require('assert')
  3. , cappedCollectionName = "capped_test";
  4. function capitalizeFirstLetter(string) {
  5. return string.charAt(0).toUpperCase() + string.slice(1);
  6. }
  7. function createTailedCursor(db, callback) {
  8. var collection = db.collection(cappedCollectionName)
  9. , cursor = collection.find({}, { tailable: true, awaitdata: true, numberOfRetries: Number.MAX_VALUE})
  10. , stream = cursor.stream()
  11. , statusGetters = ['notified', 'closed', 'dead', 'killed'];
  12. console.log('After stream open');
  13. statusGetters.forEach(function (s) {
  14. var getter = 'is' + capitalizeFirstLetter(s);
  15. console.log("cursor " + getter + " => ", cursor[getter]());
  16. });
  17. stream.on('error', callback);
  18. stream.on('end', callback.bind(null, 'end'));
  19. stream.on('close', callback.bind(null, 'close'));
  20. stream.on('readable', callback.bind(null, 'readable'));
  21. stream.on('data', callback.bind(null, null, 'data'));
  22. console.log('After stream attach events');
  23. statusGetters.forEach(function (s) {
  24. var getter = 'is' + capitalizeFirstLetter(s);
  25. console.log("cursor " + getter + " => ", cursor[getter]());
  26. });
  27. }
  28. function cappedStreamEvent(err, evName, data) {
  29. if (err) {
  30. console.log("capped stream got error", err);
  31. return;
  32. }
  33. if (evName) {
  34. console.log("capped stream got event", evName);
  35. }
  36. if (data) {
  37. console.log("capped stream got data", data);
  38. }
  39. }
  40. // Connection URL
  41. var url = 'mongodb://localhost:27017/myproject';
  42. // Use connect method to connect to the Server
  43. MongoClient.connect(url, function(err, db) {
  44. assert.equal(null, err);
  45. console.log("Connected correctly to server");
  46. db.createCollection(cappedCollectionName,
  47. { "capped": true,
  48. "size": 100000,
  49. "max": 5000 },
  50. function(err, collection) {
  51. assert.equal(null, err);
  52. console.log("Created capped collection " + cappedCollectionName);
  53. createTailedCursor(db, cappedStreamEvent);
  54. });
  55. //db.close();
  56. });