I need to build a custom JSON object for store in PostgreSQL in json field and i use typescript for do this.
In my testing case i have this code:
interface Product {
id: number,
quantity: number,
}
let prod: Product = {} as any;
interface Products extends Array<Product>{}
let productItems : Products = [];
let productItems2 : Products = [];
let obj = {};
let container = [];
prod.id = 1;
prod.quantity = 10;
console.log("prod1: ", prod);
productItems.push(prod);
prod.id = 2;
prod.quantity = 100;
console.log("prod2: ", prod);
productItems.push(prod);
prod.id =3;
prod.quantity = 34;
console.log("prod3: ", prod);
productItems.push(prod);
obj = { "products1" : productItems}
container.push(obj);
prod.id = 10;
prod.quantity = 10;
console.log("prod2.1: ", prod);
productItems2.push(prod);
prod.id = 20;
prod.quantity = 100;
productItems2.push(prod);
console.log("prod2.2: ", prod);
prod.id =30;
prod.quantity = 34;
console.log("prod2.3: ", prod);
productItems2.push(prod);
obj = { "products2" : productItems2}
container.push(obj);
obj = { "products1" : productItems, "products2": productItems2}
console.log(JSON.stringify(obj));
For some reason when show in console the content for var productItems, always display the last item prod.id = 30 and prod.quantity = 34.
The array not stored the data for every new product but in console i can see the correct values for every new item.
My required is get an object equal to obj with correct values as follow:
{
"products1": [{
"id": 1,
"quantity": 10
}, {
"id": 2,
"quantity": 100
}, {
"id": 3,
"quantity": 34
}],
"products2": [{
"id": 10,
"quantity": 10
}, {
"id": 20,
"quantity": 100
}, {
"id": 30,
"quantity": 34
}]
}
If i print the var container display a JSON object into [] like array.
What i do wrong?
Here i have my code play https://stackblitz.com/edit/typescript-3nfapq?file=index.ts