I've a Get Method for getting data from MongoDb. So Before this , I 'll send you my Models.
This is Attributes Model .
const mongoose = require('mongoose');
const Schema = mongoose.Schema ;
const attributeSchema = new Schema({
Name : {
type: String,
required : true
},
Type : {
type: String,
required : true
},
ItemTypes : [{
type: mongoose.Schema.Types.ObjectId, ref:'ItemTypes',
required : true
}],
Code : {
type: String,
required : true
},
isRequired : {
type: Boolean,
required : true
},
CreatedUser:{
type: mongoose.Schema.Types.ObjectId , ref:'Users',
required:true
},
UpdatedUser:{
type: mongoose.Schema.Types.ObjectId , ref:'Users',
required:true
},
CreatedOn : {
type: Date,
default: Date.now
},
UpdatedOn : {
type: Date,
default: Date.now
},
})
module.exports = mongoose.model('Attributes',attributeSchema);
And This is Item Model
const mongoose = require('mongoose');
const Schema = mongoose.Schema ;
const itemSchema = new Schema({
Name : {
type: String,
required : true
},
Code : {
type: String,
required : true
},
ItemType : {
type: mongoose.Schema.Types.ObjectId , ref : "ItemTypes",
required : true
},
Family : {
type: String,
required : true
},
Attributes : [{
type: mongoose.Schema.Types.ObjectId , ref: "Attributes",
required : true
}],
CreatedUser:{
type: mongoose.Schema.Types.ObjectId , ref:'Users',
required:true
},
UpdatedUser:{
type: mongoose.Schema.Types.ObjectId , ref:'Users',
required:true
},
CreatedOn : {
type: Date,
default: Date.now
},
UpdatedOn : {
type: Date,
default: Date.now
},
})
module.exports = mongoose.model('Items',itemSchema);
And this is ItemValue Model
const mongoose = require('mongoose');
const Schema = mongoose.Schema ;
const itemValueSchema = new Schema({
Item : {
type: mongoose.Schema.Types.ObjectId, ref:'Items',
required : true
},
Attribute : {
type: mongoose.Schema.Types.ObjectId, ref:'Attributes',
required : true
},
Value : {
type: String,
required : true
},
CreatedUser:{
type: mongoose.Schema.Types.ObjectId , ref:'Users',
required:true
},
UpdatedUser:{
type: mongoose.Schema.Types.ObjectId , ref:'Users',
required:true
},
CreatedOn : {
type: Date,
default: Date.now
},
UpdatedOn : {
type: Date,
default: Date.now
},
})
module.exports = mongoose.model('ItemValues',itemValueSchema);
So I've a Get Method for Get Item . But when I get item, I want to show this item's Attributes and This Attributes Values from ItemValues table. This is my Get Method
router.get('/test2', async (req, res) => {
itemModel.aggregate(
[
{
$match: { Code: 'UmitHesapCode11223' }
},
{
$lookup:
{
from: "itemvalues",
localField: "_id",
foreignField: "Item",
as: "ItemValues"
},
},
{
$group: {
_id: "$_id"
}
}
]
)
.exec((err, result) => {
if (err) return res.status(400).send(err)
res.status(200).send(result)
})
})
When I call this method , This Response is returning =>
[
{
"_id": "631cbdd8a63c12fd5f4638be",
"Name": "UmitHesap",
"Code": "UmitHesapCode11223",
"Family": "AccountFamily",
"UpdatedUser": "631c78a8067dacf22960edff",
"CreatedOn": "2022-09-10T16:39:52.842Z",
"UpdatedOn": "2022-09-10T16:39:52.842Z",
"ItemValues": [
{
"Attribute": "631ca8dcad85970ea70869b4",
"Value": "Umit"
},
{
"Attribute": "631ca8e7ad85970ea70869b7",
"Value": "Camurcuk"
},
{
"Attribute": "631ca8f6ad85970ea70869ba",
"Value": "BOLU"
},
{
"Attribute": "631ca902ad85970ea70869bd",
"Value": "12/09/1997"
},
{
"Attribute": "631ca910ad85970ea70869c0",
"Value": "905301237997"
}
]
},
{
"_id": "631cbe0d7b97c716d5e9cdd9",
"Name": "UmitHesap",
"Code": "UmitHesapCode",
"Family": "AccountFamily",
"UpdatedUser": "631c78a8067dacf22960edff",
"CreatedOn": "2022-09-10T16:40:45.306Z",
"UpdatedOn": "2022-09-10T16:40:45.306Z",
"ItemValues": [
{
"Attribute": "631ca8dcad85970ea70869b4",
"Value": "Umit"
},
{
"Attribute": "631ca8e7ad85970ea70869b7",
"Value": "Camurcuk"
},
{
"Attribute": "631ca8f6ad85970ea70869ba",
"Value": "BOLU"
},
{
"Attribute": "631ca902ad85970ea70869bd",
"Value": "12/09/1997"
},
{
"Attribute": "631ca910ad85970ea70869c0",
"Value": "905301237997"
}
]
},
{
"_id": "6325d9ff37d2c77e60632d63",
"Name": "Product",
"Code": "umitProduct",
"Family": "testProduct",
"UpdatedUser": "631c78a8067dacf22960edff",
"CreatedOn": "2022-09-17T14:30:23.183Z",
"UpdatedOn": "2022-09-17T14:30:23.183Z",
"ItemValues": [
{
"Attribute": "631ca927ad85970ea70869c3",
"Value": "MacStand"
},
{
"Attribute": "631ca92ead85970ea70869c6",
"Value": "13323TL"
},
{
"Attribute": "631ca937ad85970ea70869c9",
"Value": "1500"
},
{
"Attribute": "631ca941ad85970ea70869cc",
"Value": "300TL"
}
]
}
]
So in This response, I want to Populate ItemValues.Attribute. Which I mean this.
how I can fix this ? I tried so much way but I can't fix it.
