Я использую mongodb и mongoose для управления базой данных в моем приложении.В качестве бэкэнда я использую NodeJS.В моем случае я должен собрать данные с некоторых устройств.Количество устройств динамически меняется.Как я могу добавить поле схемы через маршрут.Моя схема,
const mongoose = require('mongoose');
const dataStructure = mongoose.Schema({
data: [{
Node_1: [{
sensor_1: { type: Number },
sensor_2: { type: Number },
sensor_3: { type: Number },
sensor_4: { type: Number }
}]
}]
})
module.exports = mongoose.model('Data', dataStructure);
Как и в этой схеме, у меня есть массив data
для хранения данных.Если у меня есть 2 узла, я хочу добавить Node_2
в мою схему для регистрации данных с обоих 2 узлов.В некоторых случаях я хочу регистрировать данные с 3 разных узлов, например, мне нужно изменить схему с на стороне клиента .Мне нужно сделать это со стороны клиента,
const mongoose = require('mongoose');
const dataStructure = mongoose.Schema({
data: [{
Node_1: [{
sensor_1: { type: Number },
sensor_2: { type: Number },
sensor_3: { type: Number },
sensor_4: { type: Number }
}],
Node_2: [{
sensor_1: { type: Number },
sensor_2: { type: Number },
sensor_3: { type: Number },
sensor_4: { type: Number }
}]
})
module.exports = mongoose.model('Data', dataStructure);
Как я могу это сделать.
Я пробовал этот маршрут,
const dynamic_schemas = require('mongoose-dynamic-schemas');
const Data = require('../schema/dataschema');
router.post('/addNode', (req, res, next) => {
const nodeNumber = req.body.nodeNumber;
Data
.then(result => {
dynamic_schemas.addSchemaField(Data.data, "Node_"+nodeNumber,
[{
sensor_1: Number, sensor_2: Number, sensor_3: Number,
sensor_4: Number
}] )
})
.catch(err => {
if(err){
res.status(500).json({
state: false
})
} else{
res.status(200).json({
state: true
})
}
})
})
Я получаю ошибку, чтоговоря Cannot overwrite 'Data' model once compiled.
Может ли кто-нибудь мне помочь.