从不同模型的Node.js获取数据MongoDB Express JS [英] Get data from different model nodejs mongodb express js

查看:62
本文介绍了从不同模型的Node.js获取数据MongoDB Express JS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个模型文件,即银行存款"和子帐户"详细信息.我想从子帐户明细中获取current balance到银行存款.我想在mongodb和node js中执行此操作.我目前正在进行查找操作,但该数组显示为空.

I have two model files Bank Deposits and Sub account details. From Sub account details I want to get current balance to Bank deposits . I want to do this in mongodb and node js. I am currently aggreagate lookup operation but it is showing the array as empty.

BankdepositModel.js

var mongoose = require("mongoose");

var BankDepositsSchema = new mongoose.Schema(
  {
    source_sub_account: Array,
    amount: Number,
    cheque_notes: Number,
    to_bank_account: Array,
    amount_in_words: String,
    bank_Ref_no: String
  },
  {
    timestamps: true
  }
);

module.exports = mongoose.model("BankDeposits", BankDepositsSchema);

Subaccountdetailsmodel.js

var mongoose = require("mongoose");

var SubAccountDetailsSchema = new mongoose.Schema(
  {
    sub_account_name: String,
    current_balance: Number,
    account: Array
  },
  {
    timestamps: true
  }
);

module.exports = mongoose.model("SubAccountDetails", SubAccountDetailsSchema);

Controller.js

var BankDeposits = require("../model/bankdepositmodel");
var SubAccountDetails = require("../model/subaccountsmodel.js");

exports.create1 = (req, res) => {
  var BankDeposit = new BankDeposits({
    source_sub_account: req.body.source_sub_account,
    amount: req.body.amount,
    cheque_notes: req.body.cheque_notes,
    to_bank_account: req.body.to_bank_account,
    amount_in_words: req.body.amount_in_words,
    bank_ref_no: req.body.bank_ref_no
  });

  BankDeposit.save()
    .then(data1 => {
      res.send(data1);
    })
    .catch(err => {
      res.status(500).send({
        message: err.message
      });
    });
};

//BankDeposit get
exports.find1 = (req, res) => {
  BankDeposits.aggregate([
    {
      $lookup: {
        from: "SubAccountDetails",
        localField: "current_balance",
        foreignField: "current_balance",
        as: "balance"
      }
    }
  ])
    .then(appdata => {
      res.status(200).send(appdata); //On successful fetch, server responds with status 200
    })
    .catch(err => {
      res.status(400).send(err); //On error, server responds with status 400
    });
};
//sub account details post
exports.createSubAccountDetail = (req, res) => {
  var SubAccountDetail = new SubAccountDetails({
    sub_account_name: req.body.sub_account_name,
    current_balance: req.body.current_balance,
    account: req.body.account
  });

  SubAccountDetail.save()
    .then(SubAccountDetail => {
      res.send(SubAccountDetail);
    })
    .catch(err => {
      res.status(500).send({
        message: err.message
      });
    });
};

//sub account details get
exports.SubAccountDetail = (req, res) => {
  SubAccountDetails.find()
    .then(SubAccountDetails => {
      res.send(SubAccountDetails);
    })
    .catch(err => {
      res.status(500).send({
        message: err.message || "Some error occurred while retrieving regs."
      });
    });
};

推荐答案

您可以这样获得它

BankDeposits.aggregate([
    {
      $lookup: {
        from: "SubAccountDetails",
        localField: "source_sub_account",
        foreignField: "sub_account_name",
        as: "sub_acount"
      }
    }
  ])

现在,您将在返回数据的sub_account属性中获得完整的sub_account对象,current_balance将在同一位置

Now you will get your complete sub_account object in sub_account property of returned data, current_balance will be in same

假设SubAccountDetails&中的sub_account_name BankDeposits中的source_sub_account相同

This is assuming that sub_account_name in SubAccountDetails & source_sub_account in BankDeposits are same

这篇关于从不同模型的Node.js获取数据MongoDB Express JS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆