NodeJS MongoDB | массив моделей не работает при хранении в переменной класса?

#javascript #node.js #mongodb

Вопрос:

мне нужно сохранить кучу скомпилированных моделей в объекте, откуда я позже захочу вызвать их для вставки документов в MongoDB.

 const mongoose = require('mongoose')

const mySchema = new mongoose.Schema({
  blah: Number,
  stamp: Number
})


let collections = {}

for( let i = 0; i < 5; i  ) {
  collections['collection_' i] = mongoose.model('testtttttt_'   i, mySchema)
}

// testing
let newEnrty = new collections['collection_0']({
  blah: 11,
  stamp: 22
});

console.log(newEnrty)
 

это работает, и console.log() выдает мне правильный объект { blah: 11, stamp: 22, _id: new ObjectId("6131fedde4bf37f0edf0d158") }

но теперь я хочу, чтобы мои коллекции-объекты создавались в моем классе-оболочке mongo

 const mongoose = require('mongoose')
const timeseriesSchema = require('../scheme/ts_schema')


class MongoClient {

  constructor(cfg) {

    // CONNECT TO MONGO-ENGINE
    mongoose.connect(cfg.mongoUrl   cfg.mongoDbName, {
        useNewUrlParser: true,
        useUnifiedTopology: true
    })

    this.db = mongoose.connection
    this.collections = {}

    // GET NOTIFIED ON CONNECTION-ERROR
    this.db.on('error', function (err) {
        console.log('Could not connect to mongo server on '     cfg.mongoUrl)
        console.log(err)
    });

    // DISPLAY STATUS ON CONNECT
    this.db.once('open', () => {
        console.log("Connected to "   cfg.mongoUrl   " ("   cfg.mongoDbName   ")")
    })
  }


  // Create a model for every device
  initDeviceCollections(devices) {    
    for(let i = 0; i < devices.length; i  ) {
        this.collections[devices[i]] = mongoose.model(devices[i], timeseriesSchema)                      
    }       
  }

  // Write Scheme into DB
  put(newEntry) { 
    newEntry.save(function(err) {             
        // TODO: log error or notify dev
        if(err) {                
            console.log(err);
        } 
        console.log('saved', newEntry)
    });
  }

}

module.exports = {
  MongoClient: MongoClient
};
 

теперь, когда я инициализирую экземпляр этого класса, вызываю initDeviceCollections() и создаю и помещаю() запись, я получаю пустой документ в своем mongodb(?)

 const cfg = require('./src/config/config')

const MongoClient = require('./src/lib/mongoClient.class')
const mongoClient = new MongoClient.MongoClient(cfg.mongo)

// Compile all models for all schemas
mongoClient.initDeviceCollections(cfg.mqqt.devices)

let entry = new mongoClient.collections['01338522'] ({
  timeseriesID: 11,
  stamp: 22,
  unit: "ddd",
  power: 33,
  counter: 44
})

mongoClient.put(entry); 
 

I can’t help.. can someone tell me, what I am doing wrong?