在 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?