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);