Я играю с node.js и на основе этого wonderful tutorial Я создал двух поставщиков (SchemaProvider и EntityProvider).node.js: Область видимости импортированных модулей
Они выглядят как как:
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;
EntityProvider = function(host, port) {
this.db = new Db('timerange', new Server(host, port, {auto_reconnect: true}, {}));
this.db.open(function() {
console.log("Schema Provider has connected and may be used as of now.");
});
};
EntityProvider.prototype.getCollection = function(callback) {
this.db.collection('entity', function(error, collection) {
if (error) {
callback(error)
} else {
callback(null, collection);
}
});
};
EntityProvider.prototype.findById = function(id /* The id to be found */, callback) {
this.getCollection(function(error, collection) {
if (error) {
callback(error);
} else {
collection.findOne({_id: id}, function(error, result) {
if (error) {
callback (error);
} else {
callback(null, result);
}
});
}
});
};
В app.js я требую ('поставщика'), где определены как поставщики.
Тогда я:
schemaProvider = new SchemaProvider('192.168.0.50', 27017);
entityProvider = new EntityProvider('192.168.0.50', 27017);
Теперь я создал модуль с именем dao
(я из перспективных :-) Java/весна). Поскольку я не использовал «var», обе переменные и, следовательно, поставщики доступны в моем DAO. Если я использую «var», поставщики не будут доступны.
Мой вопрос:
Если бы я хотел использовать только один экземпляр поставщика на протяжении всего приложения, как бы я это сделать?
Заранее благодарен!
Я протестировать его как можно скорее :-) – Jan
Хорошо, теперь у меня есть одиночки, но еще одна проблема. Я вызываю this.getCollection, а затем делаю collection.find ({}). ToArray (function (err, arr) {console.log (arr)}); но ничего не происходит :( – Jan