NodeJS & Mongoose - Uppdatera objekt i array
Tjenare,
har småproblem att greppa exakt hur detta genomförs i NodeJS. Är komplett nybörjade för NodeJS med Mongoose och även hur MongoDB exakt fungerar. Hittills har jag bara kodat i SQL-databaser med C#, php och ASP.NET så är inte alls van vid detta.
Jag har ett objekt som innehåller en array av objekt, vad jag vill göra är att kunna uppdatera enskilda objekt så enkelt som möjligt.
Min kod hittills:
Mitt objekt:
var schema = mongoose.Schema({
name: [{
first: String,
last: { type: String, trim: true }
}],
department: String,
age: { type: Number, min: 0, max: 65 },
entries: [{
starts: String,
ends: String,
date: { type: Date, index: true },
exclude: { type: Boolean, default: false },
lunch: { type: Number, default: 0, min: 0, max: 60 }
}]
});
Uppdatera objekt i array:
router.put('/change/:id', function(req, res){
var id = req.params.id;
person.findOneAndUpdate(
{
_id: id
},
{
$set:
{
starts: req.body.starts,
ends: req.body.ends,
lunch: req.body.lunch,
exclude:req.body.exclude,
date: req.body.date
}
},
{
new: true
},
function(err, doc){
if(err){
console.log(err);
res.status(500).send();
} else{
res.status(200).send();
}
}
);
});
Objektet jag försöker uppdatera ser i slutändan ut såhär:
[1]
0: {
"_id": "57dd20f28676462854106361"
"age": 18
"__v": 0
"entries": [1]
0: {
"date": "2016-09-17T00:00:00.000Z"
"ends": "16:00"
"starts": "07:00"
"_id": "57dd213e8676462854106363"
"lunch": 60
"exclude": false
}-
-
"name": [1]
0: {
"first": "Demo"
"last": "exemplar"
"_id": "57dd20f28676462854106362"
}-
-
}
Att skapa objektet och att radera det har jag inga problem med. Men att uppdatera ett objekt i den array som finns (entries) går inte så bra.
Jag använder Advanced Rest API tillsammans med Brackets för att koda. I ARA så skickar jag en PUT till http://localhost:3000/change/57dd213e8676462854106363 med application/json info:
{
"starts": "08:30",
"ends": "20:00",
"exclude": false,
"lunch": 60,
"date": "2016-09-17"
}
samma resultat även om jag skickar den med id 57dd20f28676462854106361 (själva objektets).
Jag får kod 200 på försök att skicka detta, så inget går ju fel, men det blir ju inte korrekt heller.
Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
Felkod40