Как добавить поле в схему мангуста по маршруту - PullRequest
0 голосов
/ 16 марта 2019

Я использую 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.

Может ли кто-нибудь мне помочь.

...