Message from @redd
Discord ID: 430598770112200704
holy shit
```js
async function populateImageInformation(productRecord) {
let imageInfo = [];
for(let uploadId of productRecord.images) {
let imageData = await File.getByUploadId(uploadId);
imageInfo.push(imageData);
}
productRecord.images = imageInfo;
console.log(require('util').inspect(productRecord))
return productRecord;
}
```
why the fuck is the output so dumb
```
[{"_id":"5ac2952b7619a334903bccd7","name":"test product","stockCode":"XD69","price":"30","__v":0,"updatedAt":"2018-04-02T20:40:11.902Z","createdAt":"2018-04-02T20:40:11.898Z",
"images":
["{ _id: 5ac295257619a334903bccd6,\n uploadId: 'b6788f4788d9f131475aa04b61f5e29c',\n name: 'stainless-steel-bg-3.jpg',\n type: 'image/jpeg',\n size: 1021415,\n uploader: 5a84547d95a6728d64dcca41,\n __v: 0,\n updatedAt: 2018-04-02T20:40:05.022Z,\n createdAt: 2018-04-02T20:40:05.013Z,\n staffOnly: false }"]
,"description":"this is a test xd"}]```
the images property is an array of string versions of an object, not JSON, not valid objects, just human readable strings complete with whitespace
lol
>JS IS SO FUCKING DUMB
Free strings, dude.
no need to repeat it twice my dude
In this case, the blame is on whoever created that File class, no?
It's return a stringified JSON.
File is a `mongoose` schematic object, basically it is a class that abstracts a connection to a MongoDB collection
so it usually makes it easy to get records from the database
in this case it finds the one record with a specified ID
the data is returned and, when tested is an object
but for some reason when I push it to an array it goes ape shit and becomes a human readable string
the function takes a product record, then iterates the list of image upload IDs then loads info for each one. then it is supposed to replace that array with the list of file information records
I cannot for the life of me figure out why this fucks with the objects
A class that retrieves data from a database, called `File`?
Holy crap.
Now you check `findOne()`.
no it returns an object
and `typeof imageData` was === 'object
literally going bald from the amount of hair I am tearing out over here
What happens if you replace
```js
imageInfo.push(imageData);
```
by
```js
imageInfo = [imageData];
```
wut
in this case there could be multiple files...
do you mean just for testing?
For debugging purposes.
k
same result
Double check everything. `console.log()` imageData, imageInfo and productRecord every time one of them changes.
You know, sometimes one forgets to save the source code before running it again, and it looks like it's not making sense, etc.
it autosaves lol
```js
let imageInfo = [];
for(let uploadId of productRecord.images) {
let imageData = await File.getByUploadId(uploadId);
imageInfo.push(imageData);
console.log(typeof imageData); // => object
}
console.log(typeof imageInfo); // => object
console.log(typeof imageInfo[0]); // => object
productRecord.images = imageInfo;
console.log(typeof productRecord.images); // => object
console.log(typeof productRecord.images[0]); // => string
return productRecord;```
added a few more tests
for some dumb reason, the object is fucked when I try to save it to an already existing object
this is insane
if I put this on StackOverflow they will probably be all over this shit
Yeah, do that.