【发布时间】:2020-06-14 08:44:25
【问题描述】:
我是一名初学者,正在学习更多关于 react 和 mongoDB 的知识,但我在两者之间的交流遇到了一些麻烦。我一直在关注tutorial on Medium 使用 Plaid API 从用户那里获取历史交易数据 (here's the tutorial codebase used)。虽然用户的银行账户和用户个人资料信息存储在 mongoDB 后端,但交易数据却没有。取而代之的是,每次用户登陆某个页面时都会进行一次 API 调用,并将交易数据转换为一个数组,该数组显示在用户前端的数据表中。
这位于上面链接的教程代码库中 Accounts.js 文件的第 56 行(文件位于此目录中: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 中 - 否则我将永远无法看到用户拉入的任何事务数据。我认为我应该做的是在名为 Transactions.js 的模型中创建一个新的 js 文件。目前在模型文件夹(在父目录中)有一个 Account.js 文件和一个 User.js 文件,它们为每个数据集设置架构。我在想 Transactions.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);
但是从那里我不确定如何将 transactionsData 数组发布到此架构中。理想情况下,我希望它在每次用户点击 API 时发布,并且仅在 TransactionSchema 不存在的情况下添加项目。
我的一个相关问题是,从 mongoDB 调用数据时,在前端向用户呈现特定数据的最有效方法是什么?例如,上面引用的同一 Accounts.js 文件在第 76 行包含以下内容:
<b>Welcome, {user.name.split(" ")[0]}</b>
它的作用是获取在注册期间输入的用户全名,然后将其转换为名字。在我看来,这是在引用模型中的 User.js 文件并查询名称字段。但是,当我将其更改为 User.js 中的另一个字段(例如电子邮件)并使用相同的代码约定 {user.email} 时,我看不到任何结果。
感谢您的帮助!
【问题讨论】:
标签: javascript reactjs mongodb plaid