javascript - NodeJs + 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-wrapper-class 中创建我的集合对象
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()
并创建 & put() 一个条目时,我在我的 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);
我无能为力..有人可以告诉我,我做错了什么吗?
解决方案
推荐阅读
- javascript - 我不能在模态部分给出 id 值
- reactjs - 使用 React 钩子和 onScroll 或 onWheel 防止重新渲染
- excel - 剪切复制选定范围在一列的最后一个单元格处
- r - 按组更改ggplot中标签的默认颜色
- java - 更改项目目录和模块名称后无法解析活动名称
- python - Python:使用 JWT 令牌和 cookie 处理 Flask 会话
- python - Django 无法连接到 SQL Server 2019
- r - 使用 R 进行分区和排列
- keyerror - Odoo 开发中何时、为什么以及如何避免 KeyError
- asp.net - “应用程序启动异常:System.Net.Sockets.SocketException (111):连接被拒绝”与 docker-compose