Reputation: 121
I am getting this error when I try to update a record: (node:2018) UnhandledPromiseRejectionWarning: MongoError: document must be a valid JavaScript object
Heres my code that I'm trying to run:
global.db.collection("groups").find({userId: user_id.toString(), groupNumber:parseInt(realGroupNumber)}).toArray( function (err, group) {
if(err) {console.log(err)};
if(group[0]) {
group[0].students.push(NewRow[row]);
//NOTE: HERE IS WHERE THE ERROR HAPPENS (BELOW)
global.db.collection("groups").update({userId: user_id.toString(), groupNumber:parseInt(realGroupNumber)}), group[0], function (err, group) {
if(err) {console.log(err)};
};
};
});
It keeps saying that group[0] is not a valid JavaScript object, but typeof group[0] returns 'object'. Also here is an example of group[0] console logged out:
{ _id: 5df7fcc562f67c0a0b66aefd,
userId: '5d3f42db404e9e0a91fdd9d8',
groupNumber: 3,
selectedLeaders: [ '5df7d27e2e5e1904552a30a4' ],
roomNumber: '333',
groupNotes: '',
students:
[ { firstName: 'June',
userId: '5d3f42db404e9e0a91fdd9d8',
lastName: 'Lopez',
gender: 'female',
groupId: 3,
roomNumber: '1234',
_id: 5dfac3a34c64110809726571 } ] }
Any help greatly appreciated! Thanks!
Upvotes: 0
Views: 866
Reputation: 3421
It looks like the error is being caused by the closing parenthesis on line 7 below. This is closing the update, which excludes group[0]
and the callback from being included:
global.db.collection("groups").update({
userId: user_id.toString(),
groupNumber: parseInt(realGroupNumber)
}), group[0], // <---- HERE
function(err, group) {
if (err) {
console.log(err)
};
};
Try moving it to the end of the block, after the callback:
//NOTE: HERE IS WHERE THE ERROR HAPPENS (BELOW)
global.db.collection("groups").update({
userId: user_id.toString(),
groupNumber: parseInt(realGroupNumber)
}, group[0],
function(err, group) {
if (err) {
console.log(err)
};
});
That said, note that collection.update()
has been deprecated for some time. You should look into updating to at least a 3.X version of the Node driver and using updateOne
or updateMany
:
https://mongodb.github.io/node-mongodb-native/2.2/api/Collection.html#update
Upvotes: 1