go-oleg в принципе прав, но в эти дни вы (вероятно) не хотите использовать «mongodb» самостоятельно, скорее используйте некоторую фреймворк, которая сделает для вас много «грязной работы».
Например, мангуст является одним из самых распространенных. Это то, что мы имеем в нашем исходном файле server.js
:
const mongoose = require('mongoose');
const options = {server: {socketOptions: {keepAlive: 1}}};
mongoose.connect(config.db, options);
Это все, что необходимо для его настройки. Теперь используйте это в любом месте вашего кода
const mongoose = require('mongoose');
И вы получите тот экземпляр, который вы установили с помощью mongoose.connect
Вы не показываете определение типа собрания и ваш класс контроллера, но попробуйте
.subscribe(data => { this.meeting = data; console.log(this.meeting) } )
Проблема, которую console.log
показывает undefined
, заключается в том, что функция обратного вызова внутри подписки выполняется асинхронно (ПОСЛЕ следующей строки кода: console.log) - поэтому, если вы поместите console.log в функцию обратного вызова, вы увидите результат
Вы также можете использовать следующую конструкцию с async / await:
async getData() {
this.meeting = await this.meetServ.rolloutMeeting(this.singleMeetingID).toPromise();
console.log(this.meeting)
}
, но вы должны знать, что на самом деле код после await (console.log) будет запускаться асинхронно после загрузки данных (так что это что-то вроде синтаксического сахара, который делает ваш асинхронный код похожим на синхронный, поэтому он менее вложен)