Есть две основные вещи, которые следует учитывать при решении следующей проблемы.
- Сначала экспортируйте его правильно.Я не уверен, что вы хотели это исключить, но важно экспортировать класс для использования снаружи как
require
.Вот NodeJS экспортная документация , если вы хотите технические детали.
// common module default export
module.exports = class CouchController {
constructor(couchbase, config) {
// You may either pass couchbase and config as params, or import directly into the controller
this.cluster = new couchbase.Cluster(config.cluster);
this.cluster.authenticate(config.userid, config.password);
this.bucket = cluster.openBucket(config.bucket);
this.N1qlQuery = couchbase.N1qlQuery;
}
doSomeQuery(queryString, callback) {
this.bucket.manager().createPrimaryIndex(function() {
this.bucket.query(
this.N1qlQuery.fromString("SELECT * FROM bucketname WHERE $1 in interests LIMIT 1"),
[queryString],
callback(err, result)
)
});
}
}
Инициализация класса немного некорректна.Вы можете увидеть документы по этому
здесь .Вы можете изменить свое требование и инициализацию на ...
const CouchController = require('../controllers/CouchController');
const newTest = new CouchController(couchbase, config);
// now you can access the function :)
newTest.doSomeQuery("query it up", () => {
// here is your callback
})
Если бы вы использовали модули ES6 или машинопись, вы могли бы экспортировать что-то вроде ...
export default class CouchController {
// ...
}
... и импортировать что-то вроде ...
import CouchController from '../controllers/CouchController';
const newTest = new CouchController(couchbase, config);