Мне было интересно, если кто-нибудь знает, как я могу добиться желаемого результата.
Если метод, который я использую, неверен, пожалуйста, дайте мне знать, если есть лучший способ сделать это.
У меня есть 2 файла excel со следующими данными: picture of excelфайлы Вывод, который у меня есть, и вывод, который я пытаюсь получить: Изображение выводов
Если для решения этой проблемы требуются другие данные, которые я не включил, пожалуйста, дайте мне знать.
Я использовал read-excel-file для извлечения данных и передачи их в базу данных mogoDB. Это модели, которые я использовал:
модель joinA:
let JOINA = new Schema({
Id: {
type: String
},
joina_key: {
type: String
},
joina_value1: {
type: String
},
joina_value2: {
type: String
}});
модель joinB:
let JOINB = new Schema({
Id: {
type: String
},
joinb_key: {
type: String
},
joinb_mult1: {
type: String
},
joinb_mult2: {
type: String
}});
Маршрут конечной точки на моем сервере:
bomDataset.route('/joinXXX').get(function (req, res) {
joinA.aggregate([{
$lookup: {
from: "joinbs", // collection name in db
localField: "joina_key",
foreignField: "joinb_key",
as: "arrayData"
}
}
]).exec(function(err, results) {
if (err) {
console.log(err);
} else {
res.json(results);
}
});});
функция стрелки для кнопки «когда» (при нажатии следует установить состояние, которое будет использоваться в таблице):
testingJoin = () => {
axios
.get('http://localhost:4000/app/joinXXX')
.then(response => {
var data = response.data;
this.setState({join3 : data})
console.log(this.state.join3);
})
.catch(function(error) {
console.log(error);
});}
Заголовок таблицы:
<MDBTableHead color="blue-grey lighten-4">
<th>Key</th>
<th>Val 1</th>
<th>Val 2</th>
<th>Mult 1</th>
<th>Mult 2</th>
<th> Final 1</th>
<th>Final 2</th>
</MDBTableHead>
Тело таблицы:
{
join3.map((item,key) => (
<tr key = {item["joina_key"]} >
<td> {item["joina_key"]} </td>
<td> {item["joina_value1"]} </td>
<td> {item["joina_value2"]} </td>
{item.arrayData.map( data =>
<td> {data.joinb_mult1 }</td>
)}
{item.arrayData.map( data =>
<td> {data.joinb_mult2 }</td>
)}
{item.arrayData.map( data => {
var final1 = data.joinb_mult1 * item["joina_value1"];
// console.log({aaa});
return (
<td> {final1} </td>
)
}
)}
{item.arrayData.map( data => {
var final2 = data.joinb_mult2 * item["joina_value2"];
return (
<td> {final2} </td>
)
}
)}
</tr>
))
}