You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB按Email查询交易记录及获取Credit交易的技术问题

问题1:通过Email查询MongoDB交易记录的错误修复

错误原因

你使用的findById()方法是专门针对MongoDB文档的_id字段(ObjectId类型)进行查询的,而你传入的是字符串格式的邮箱地址,类型不匹配导致了Cast to ObjectId failed的错误。要查询所有匹配该邮箱的交易记录,需要使用find()方法(返回多条记录)。

修正后的代码

const router = require("express").Router();
const Transaction = require("../models/Transactions");

router.get("/get-transactionby-email/:email", async (req, res) => {
  try {
    if (
      !req.headers.authorization ||
      !req.headers.authorization.startsWith("Bearer ") ||
      !req.headers.authorization.split(" ")[1]
    ) {
      return res.status(422).json({ message: "Please Provide Token!" });
    }
    // 替换findById为find,根据email字段查询所有匹配记录
    const trans = await Transaction.find({ email: req.params.email });
    res.status(200).json(trans);
  } catch (error) {
    res.status(404).json({ message: error.message });
  }
});

module.exports = router;

注意:需确保你的Transactions模型中定义了email字段,且存储的是字符串类型的邮箱地址,才能保证查询匹配。


问题2:获取所有credit类型的交易记录

根据你的数据库字段结构,分两种常见场景处理:

场景1:通过交易类型字段查询

如果你的交易模型中有type字段用来标识交易类型(例如值为credit或debit),直接按该字段查询:

const Transaction = require("../models/Transactions");

async function getCreditTransactions() {
  try {
    const creditTransactions = await Transaction.find({ type: "credit" });
    return creditTransactions;
  } catch (error) {
    console.error("获取贷记交易失败:", error);
    throw error;
  }
}

场景2:通过credit金额字段查询

如果credit字段存储的是贷记交易的金额(借记交易的credit字段为空或0),可查询credit字段有效(非空且大于0)的记录:

const Transaction = require("../models/Transactions");

async function getCreditTransactions() {
  try {
    const creditTransactions = await Transaction.find({ 
      credit: { $exists: true, $gt: 0 } 
    });
    return creditTransactions;
  } catch (error) {
    console.error("获取贷记交易失败:", error);
    throw error;
  }
}

如果要在Express路由中使用,只需将上述查询逻辑替换问题1中的查询代码即可。


内容的提问来源于stack exchange,提问作者Lucas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 17:10:16