Mohammed Shayan Khan
Mohammed Shayan Khan

Reputation: 55

Handling arrays with express post request

I'm using express to make the API for my web app. Below is the Schema for my annual budgets collection.

var {mongoose} = require('../db/mongoose'); 


var budgets = new mongoose.Schema({
        year: Number, 
        categories: [{
            name: String,
            amount: Number
        }]
}); 

var Budgets = mongoose.model('Budgets', budgets); 

module.exports = {
    Budgets
};

I am trying to passing in an array of categories using postman in the following way:

{
	"year":2018,
	"categories": [{
		"name":"Logistics",
		"amount":1500
	}, {
		"name":"Finance",
		"amount":23030
	}]
}

This the post request for my this collection. The request times out and is not saved in the database. I cannot seem to figure out what is wrong with the request. Please help

app.post('/annualBudgets', (req, res) => {
            var categories = req.body.categories; 
            var budgets = new Budgets({
                year : req.body.year,
            }); 
            budgets.categories.push(categories);

            budgets.save().then((docs) => {
                res.send(docs);
                console.log(docs)
            }).catch((e) => res.status(404)); 
        }); 

Upvotes: 1

Views: 32

Answers (1)

Lyubomir
Lyubomir

Reputation: 20037

The problem is here

budgets.categories.push(categories);

it should be

budgets.categories = categories;
// Alternatively 
// budgets.categories.push(...categories);

because categories is already an array.

Upvotes: 1

Related Questions