Node.js аутентификация драйвера mongodb-native в cloudfoundry - PullRequest
3 голосов
/ 05 августа 2011

В настоящее время я пытаюсь возиться с Node и Mongo для самостоятельного обучения. Я просматривал различные записи в блоге и пытался создать простой блог, написанный на ноде, с работающим dong монго.

В любом случае, у меня проблемы с тем, чтобы это работало в облачной среде. Я посмотрел на группу пользователей mongodb об аутентификации и нашел скрипт узла:

var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
var BSON = require('mongodb').BSON;
var ObjectID = require('mongodb').ObjectID;

ArticleProvider = function(dbname,host, port,username,password) {
  this.db= new Db(dbname, new Server(host, port, {auto_reconnect: true}, {}));
  this.db.open(function(){
        this.db.authenticate(username, password, function(err, db) { 
                callback(err, db); 
        }); 
  });
};

Я не могу на всю жизнь заставить это работать.

       this.db.authenticate(username, password, function() {}); 
                ^
TypeError: Cannot call method 'authenticate' of undefined
    at /home/ben/NodeJS/sandbox/NodeBlog/articleprovider-mongodb.js:10:17
    at /home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/db.js:81:14
    at /home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/connections/server.js:76:11
    at /home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/admin.js:16:12
    at [object Object].<anonymous> (/home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/admin.js:124:12)
    at [object Object].emit (events.js:67:17)
    at [object Object].<anonymous> (/home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/connections/server.js:97:12)
    at [object Object].emit (events.js:64:17)
    at Socket.<anonymous> (/home/ben/NodeJS/sandbox/NodeBlog/node_modules/mongodb/lib/mongodb/connection.js:108:16)
    at Socket.emit (events.js:64:17)

Любой, кто сможет указать, где я работаю в лицевой маске, был бы очень признателен.

Ответы [ 2 ]

10 голосов
/ 23 января 2012

Я также столкнулся с такой же проблемой. Стараясь изо всех сил, я нашел решения.

Это может быть очень полезно для всех разработчиков mongodb.

var ArticleProvider =  function(host, port, username, password) {
  this.db= new Db('my_db', new Server(host, port, {auto_reconnect: true}, {}));
  this.db.open(function(err,data){
     if(data){
        data.authenticate(username, password,function(err2,data2){
             if(data2){
                 console.log("Database opened");
             }
             else{
                 console.log(err2);
             }
         });
      }
      else{
           console.log(err);
      }
   });
};

Приветствие ..

1 голос
/ 05 августа 2011

Самый простой способ подключить это - использовать функцию mongourl (mongodb: // localhost: 27017 / db ...) и connect в драйверах node-mongodb-native.

Cloudfoundry запускает очень специфическую аутентифицированную базу данных, а затем сообщает вам о подключении к этой базе данных в переменных среды, что может усложнить отладку. В идеале вы хотите, чтобы он работал как на локальном компьютере, так и на Cloudfoundry в основном одинаково.

К счастью, я опубликовал статью на MongoDB.org , в которой рассказывается о простой настройке Cloudfoundry. Он имеет пошаговые инструкции от нуля до и работает как локально, так и на Cloudfoundry.

Плюс есть пример кода github .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...