在 MEAN Stack 应用程序中从 mongo db 检索数据

Posted

技术标签:

【中文标题】在 MEAN Stack 应用程序中从 mongo db 检索数据【英文标题】:Retrieving data from mongo db in MEAN Stack app 【发布时间】:2019-01-06 21:51:35 【问题描述】:

我正在学习 MEAN 堆栈,并且在我的本地 mongo db 中,我创建了一个集合“eduLevel”,其中包含一些文档,如下所示:

> db.eduLevel.find().pretty()
 "_id" : "G001", "name" : "Graduate" 
 "_id" : "M001", "name" : "Masters" 
 "_id" : "P001", "name" : "P.hd" 

我已经在我的 MEAN 应用程序中为相同的模型创建了一个模型:

const mongoose = require('mongoose');
const eduSchema = mongoose.Schema(
  _id: String,
  name: String
);

module.exports = mongoose.model('eduLevel', eduSchema);

当我执行以下代码行时,我将 edu 作为 null 作为响应(在控制台日志中我正在获取 id 值),

app.get('/edu/:id', async (req, res) => 
  console.log(req.params.id);
  let edu = await Edu.findById(req.params.id);
  console.log(edu);
  res.status(200).json(
    edu: edu.name
  )
);

这里做错了什么?

【问题讨论】:

你可以在这里包含Edu.findById功能代码。我想你忘记在函数定义中添加async了。 您能提出您的要求吗? Edu 是我写的导入模型,我是这样导入的:const Edu = require('./models/edu');而 findById 是通过 id 查找文档的 mongoose 方法,我没有覆盖它 @DheerajKumar 这就是我从我的 Angular 服务发出请求以检索数据的方式(如果这就是您所要求的): getEdu() this.httpClient.get('localhost:3000/edu/G001').subscribe(console.log) 【参考方案1】:

试试这个,

在您的代码中,您缺少 findbyId 的回调。

 app.get('/edu/:id', async (req, res) => 
      console.log(req.params.id);
      await Edu.findById(req.params.id, function (err, data) 
        if(err)
        console.log(err);
        es.status(500).send(err);
        
        console.log(data);
        res.status(200).json(
        data: data.name
        )
      );

    );

【讨论】:

不,这不起作用,我已经添加了关键字等待,为什么我需要再次回调?但是通过在 edu.js 文件中将模型名称更改为“edu”并创建一个名为 edus 的集合解决了我的问题。:) :) 为你高兴! :)

以上是关于在 MEAN Stack 应用程序中从 mongo db 检索数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MEAN STACK Web 应用程序中启用 CORS?

nginx 中 MEAN-stack 应用程序的漂亮 url

用户未在 MEAN Stack 中获得授权?

部署 MEAN Stack 应用程序,托管问题

启动节点应用程序时出错 - MEAN Stack

MEAN Stack:连接表