如何在一个页面上显示来自2个MongoDB文档的数据,使用Mongoose,Express

bf1o4zei  于 2023-04-30  发布在  Go
关注(0)|答案(1)|浏览(99)

我使用NodeJS,Express,EJS和Mongoose。我对 Mongoose 有点陌生,我不知道该如何继续。
我定义了两个模型,一个文档通过ObjectId链接到另一个。
它们看起来像这样:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const timerSchema = new Schema({
    customer: {
      type: mongoose.Schema.Types.ObjectId, ref: 'Customer',
      required: true
    },
    detailed: {
      type: String,
      required: true
    },
    summary: {
      type: String,
      required: true
    },
 
 }, { timestamps: true }

);

const custDataSchema = new Schema({
    firstName: {
      type: String,
      required: true
    },

    email: {
      type: String,
      required: true
    }, 

 }, { timestamps: true }
);
const Customer = mongoose.model('Customer', custDataSchema);
const Timer = mongoose.model('Timer', timerSchema);

module.exports = Timer;
module.exports = Customer;

我有通过网页输入的所有数据,它是正确地更新到数据库。
我能够从Customer模式中获取一些信息,以填充以下路由:

router.get('/customers/:id', (req, res) => {
    const id = req.params.id;
    Customer.findById(id)
    .then(result => {
        res.render('details', { customer: result, title: 'Customer Details' });
    })
    .catch(err => {
        console.log(err);
    });

})

然而,我无法弄清楚如何从Timer模型中获取数据,以显示在同一页面上。下面是html/ejs:

<div class="container">
      <div class="">
        <h2><%= customer.firstName %></h2>
      </div>
      <div>Email: <%= customer.email %></div>
      <div>Company: <%= tester.summary %> </div>
  </div>

我的目标是尽可能多地使用Vanilla JS(绝对不使用JQuery),我知道我在我面前缺少了一些东西。有什么办法能把我引向正确的方向吗?

qkf9rpyu

qkf9rpyu1#

对于其他需要答案的人来说,我能够将数据分配给变量并得到预期的结果:

router.get('/customers/:id', async(req, res) => {
  try{
    const id = req.params.id;
    const timeLU = await Timer.find({customer: id})
    const custLU = await Customer.findById(id)

    res.render('details', { customer: custLU, timer: timeLU, title: 'Customer Details' });

  } catch(e) {
    console.log(e)
    }
 })

相关问题