Я новичок, узнающий больше о реакции и mongoDB, и у меня возникли некоторые проблемы в общении между ними. Я следовал учебнику на Medium по использованию Plaid API для получения исторических данных транзакций от пользователей ( вот кодовая база учебника, используемая ). Хотя банковские счета пользователей и информация о профилях пользователей хранятся в бэкэнде mongoDB, данные транзакции - нет. Вместо этого вызов API выполняется каждый раз, когда пользователь попадает на определенную страницу, и данные транзакции превращаются в массив, который отображается пользователю в таблице данных на внешнем интерфейсе.
Это находится в строке 56 учетных записей. js файл в кодовой базе учебника, ссылка на которую приведена выше (файл находится в этом каталоге: client \ src \ components \ dashboard)
// Setting up data table
const transactionsColumns = [
{ title: "Account", field: "account" },
{ title: "Date", field: "date", type: "date", defaultSort: "desc" },
{ title: "Name", field: "name" },
{ title: "Amount", field: "amount" },
{ title: "Category", field: "category" }
];
let transactionsData = [];
transactions.forEach(function(account) {
account.transactions.forEach(function(transaction) {
transactionsData.push({
account: account.accountName,
date: transaction.date,
category: transaction.category[0],
name: transaction.name,
amount: transaction.amount
});
});
});
Вместо этого я хотел бы опубликовать этот массив на подключенной к mongoDB базе данных, иначе я бы никогда не смог увидеть какие-либо данные о транзакциях, которые извлекает пользователь. Что я должен сделать, чтобы выполнить sh, это создайте новый файл js в моделях, называемых транзакциями. js. В настоящее время в папке моделей (в родительском каталоге) есть файл Account. js и файл User. js, которые устанавливают схему для каждого из этих соответствующих наборов данных. Я имею в виду транзакции. js будет выглядеть следующим образом (что будет соответствовать формату массива, указанному выше):
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const TransactionSchema = new Schema({
userId: {
type: Schema.Types.ObjectId, // how we associate each transaction with a user
ref: "users"
},
accessToken: {
type: String,
required: true
},
itemId: {
type: String,
required: true
},
account: {
type: String
},
date: {
type: Date
},
name: {
type: String
},
amount: {
type: String
},
category: {
type: String
},
});
module.exports = Transaction = mongoose.model("transaction", TransactionSchema);
Но оттуда я не уверен, что делать, как размещать массив транзакцииData в эту схему. В идеале я хотел бы, чтобы он публиковал сообщения каждый раз, когда пользователь нажимает на API, и добавляет элементы в TransactionSchema только в том случае, если они еще не существуют.
Схожий вопрос, который у меня возник, заключается в том, каков наиболее эффективный способ предоставления определенных c данных пользователю на внешнем интерфейсе при вызове данных из mongoDB? Например, тот же файл Accounts. js, на который есть ссылки выше, содержит это в строке 76:
<b>Welcome, {user.name.split(" ")[0]}</b>
Что он делает, он захватывает полное имя пользователя, которое было введено при регистрации, а затем преобразует его в первое имя. Мне кажется, что это ссылка на файл User. js, который находится в моделях, и запрашивает поле имени. Когда я изменяю это на другое поле, которое находится в пользовательском. js однако (например, электронная почта) и использую тот же код соглашения {user.email}
Я не вижу никаких результатов.
Спасибо за помощь !