Nested duplicate mongoose document on generation tree - reactjs

I'm creating a project which is store a tree of generation of a family, i'm strugle while update a list when reordered the list.
I'm currently updated each person's childrens but i have duplicate person object between the root list and the child list.
For example, i have a list with 3 persons:
[
{id: 1, name: 'Duc Tran', children: []},
{id: 2, name: 'Jackie Tran', children: []}
{id: 3, name: 'Duck Tran', children: []}
]
and after move the person with id: 1 into the person with id: 2 then i wan't it to show the array like this
[
{id: 2, name: 'Jackie Tran', children: [
{id: 1, name: 'Duc Tran', children: []}
]}
{id: 3, name: 'Duck Tran', children: []}
]
Is there a way to do is at mongoose, or does it have any way to update a whole list of document ?

Related

How sort when have array with name and score mongodb

I have a document with users and each user haves "categories" and "tags", in both as at next:
[
{user_id: 1, categories:[
{category: uuidv4x1, score:75},
{category: uuidv4x2, score:67}
],
tags: [
{tag: "1ne", score:15},
{tag: "subjetive", score:89}
]}
How can order by category, tag but too by score, if i have:
[
{id: 1, category: uuidv4x6, tags:["1ne", "optimized"]},
{id: 2, category: uuidv4x2, tags:["1ne", "subjetive"]},
{id: 3, category: uuidv4x1, tags:["home", "car"]}
]
Before to all, thanks so much.
I expect sort my find for better matches, customize articles.

Check, if in .map (), that object exists in another array React

How can I see in the map of products if that product is in the favorites?
Log of products
[
{id: 1, product_name: “product one”},
{id: 2, product_name: “product two”},
{id: 3, product_name: “product three”}
]
Log of favorites
[
{id: 1, product_name: “product one”},
{id: 2, product_name: “product two”}
]
{products.map((item} =>
// Here, if the product is in the favorites list then show x else show y
// I need to check here if the product is in the favorites list, to show two different types of icons
)
I don’t know how to do, I also tried to map to favorites with product id = favorite product id, but it didn't work
var products = [{
id: 1,
product_name: 'product one'
},
{
id: 2,
product_name: 'product two'
},
{
id: 3,
product_name: 'product three'
}
]
var favorites = [{
id: 1,
product_name: 'product one'
},
{
id: 2,
product_name: 'product two'
}
]
const solution = products.map((product)=>{
return favorites.find(el=>el.product_name === product.product_name) ? 'x' : 'y'
})

Using Map Object to Render React Components in Order

I receive an array of product objects like such from my backend.
products = [
{id: 1, price: 10, category: "food", name: "apples"},
{id: 2, price: 5, category: "supplies", name: "spoons"},
{id: 3, price: 15, category: "pets", name: "cat treats"},
{id: 4, price: 9, category: "food", name: "oranges"},
// ...
]
I am looking to render all my products as strips based on their category in a specific order of priority (similar to how Netflix aligns their shows). I don't want them displayed in random order, such as the category strip of food being at the top, the next category strip being pets, etc.
I currently decided to create a map object since it keeps order as followed:
let filteredProducts = new Map([
["food", []],
["pets", []],
["supplies", []],
// ...
])
for (let product of products) {
let category = product["category"]
filteredProducts.get(category).push(product)
}
The goal is to then iterate through the map object and return multiple React Component of category strips from top to bottom.
My question is, I can't help but feel that there are more efficient ways to render this as I don't see map objects being utilized commonly. Are there more efficient and frequently used ways to filter and render by priority or is this in the right direction?
I do believe there is more easier way to do this using Array sort function.
Please consider the snippet below.
const products = [
{id: 1, price: 10, category: "food", name: "apples"},
{id: 2, price: 5, category: "supplies", name: "spoons"},
{id: 3, price: 15, category: "pets", name: "cat treats"},
{id: 4, price: 9, category: "food", name: "oranges"},
// ...
]
const priority = [
'food',
'supplies',
'pets'
]
const orderedProducts = products.sort(
(p1, p2) => priority.indexOf(p1.category) - priority.indexOf(p2.category)
);
Let me know if this looks much cleaner & easier approach.

merge and display array of object data in table using react js

I need to merge array1 and array2 , display in a table
array1= [ {id: 1,event:party, oldcity: Singapore}
{id: 2, event:fest,oldcity:Paris }]
array2= [ {id: 1,event:party, newcity: bombay}
{id: 2, event:fest,newcity:madras }]
output of merge array
mergearray= [ {id: 1,event:party,oldcity: Singapore,newcity: bombay}
{id: 2, event:fest,oldcity:Paris,newcity:madras }]
display mergearray in table
id event oldcity newcity
1 party singapore bombay
2 fest paris madras
if i merge the array
mergearray[{id: 1,event:party, oldcity: Singapore}
{id: 2, event:fest,oldcity:Paris }
{id: 1,event:party, newcity: bombay }
{id: 2, event:fest,newcity:madras }]
but am expecting to be like this
mergearray= [ {id: 1,event:party,oldcity: Singapore,newcity: bombay}
{id: 2, event:fest,oldcity:Paris,newcity:madras }]
How do you merge the arrays ?
const array1 = [{
id: 1,
event: 'party',
oldcity: 'Singapore'
}, {
id: 2,
event: 'fest',
oldcity: 'Paris'
}];
const array2 = [{
id: 1,
event: 'party',
newcity: 'bombay'
}, {
id: 2,
event: 'fest',
newcity: 'madras'
}];
// I would merge arrays this way
const mergedArray = [...array1, ...array2];
console.log('mergedArray: ', mergedArray);

Create and Connect nodes just by using "from" and "to" info in React

I am trying to create and connect some nodes using the array below. So in the end there would be 4 nodes connected to each other according to their from and to values. Any ideas on how to do it in React?
roads = [
{
id: 1,
from: {id: 111, name: “Company X”},
to: {id: 222, name: “Station 1“}
},
{
id: 2,
from: {id: 222, name: “Station 1“},
to: {id: 333, name: “Station 2“}
},
{
id: 3,
from: {id: 333, name: “Station 2”},
to: {id: 444, name: “Company Y”}
}
]
I think , you should use Normalized State. It's easy way to create your Nodes ^^

Resources