Node.js: aggiornare gli array degli oggetti di un documento di MongoDB

Node.js: aggiornare gli array degli oggetti di un documento di MongoDB

In Node.js possiamo aggiungere elementi agli array contenuti negli oggetti dei documenti di MongoDB.

Definiamo lo schema di un documento avente un array contenuto in un oggetto:


'use strict';

const mongoose = require('mongoose');

let TestSchema  = mongoose.Schema;

let TestsSchema   = new TestSchema({
    items: {
        list: Array
    }

},{collection: 'test'});

module.exports = mongoose.model('Test', TestsSchema);

Useremo l'operatore $push per aggiungere un elemento all'array:


'use strict';

const express = require('express');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

mongoose.Promise = Promise;
mongoose.connect('mongodb://user:password@127.0.0.1/mydb');

const port = process.env.PORT || 8080;
const app = express();
const Test = require('Test');


app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));


app.post('/add', function(req, res) {
    let id = req.body.id; // Valore embedded e non fornito dall'utente
    let item = req.body.item;
    if(/^[a-z0-9]+$/i.test(item)) { // Validazione
        Test.findByIdAndUpdate(id, {$push: {'items.list': item}}).then(function(test) {
            // Successo
        }).catch(function(err) {
            // Errore
        });    
    } else {
       // Errore
    }
    
});

app.listen(port);

Torna su