在不使用 _id 的情况下从 MongoDB 检索一份文档时出现 500(内部服务器错误)
500 (Internal Server Error) when retrieving one document from MongoDB without using _id
我正在使用 MEAN 堆栈(我的第一个项目),但我找不到从 MongoDB 成功请求单个元素的解决方案。当用户想要编辑主页上给定列表中的项目时,将打开我描述的页面。我的目标是,点击项目的信息(来自主页)显示在编辑页面上。
这些是 server.js 中的相关行:
mongoose.connect("mongodb://localhost:27017/item_list", {useNewUrlParser: true, useCreateIndex: true});
<...>
const itemSchema = new mongoose.Schema({id: {type: Number, required: true},
text: {type: String, required: true}
});
<...>
//get single item from db
app.get('/item/:id', async (request, response) => {
try{
var result = await Item.findById( {id: request.params.id} ).exec();
response.send(result);
}catch(error){
response.status(500).send(error);
}});
在服务模块中,我使用以下函数调用 API:
getItem(id: number): Observable<Item> {
const url = '/item/'+id;
return this.http
.get<Item>(url)
.pipe(catchError(this.handleError<Item>(`getItem id=${id}`)));
}
在“输出”模块的打字稿文件中,我使用了以下函数:
@Input() item: Item;
getItem(): void {
const id = +this.route.snapshot.paramMap.get('id');
this.itemService.getItem(id)
.subscribe(item => this.item = item);
}
路由包含项目的(唯一)ID,我分配给它 - 它是我的请求查询数据库的 ID。
这里是 link 从主页面到编辑页面的代码片段:
<a routerLink="/edit-item/ {{item.id}}">Edit</a>
但是,我收到内部服务器错误。我相信,问题出在 server.js 中的方法“.findById({...})”。我还有其他正在运行的请求(例如检索整个项目列表),因此数据库连接工作正常。非常感谢任何提示!
我正在使用 MEAN 堆栈(我的第一个项目),但我找不到从 MongoDB 成功请求单个元素的解决方案。当用户想要编辑主页上给定列表中的项目时,将打开我描述的页面。我的目标是,点击项目的信息(来自主页)显示在编辑页面上。
这些是 server.js 中的相关行:
mongoose.connect("mongodb://localhost:27017/item_list", {useNewUrlParser: true, useCreateIndex: true});
<...>
const itemSchema = new mongoose.Schema({id: {type: Number, required: true},
text: {type: String, required: true}
});
<...>
//get single item from db
app.get('/item/:id', async (request, response) => {
try{
var result = await Item.findById( {id: request.params.id} ).exec();
response.send(result);
}catch(error){
response.status(500).send(error);
}});
在服务模块中,我使用以下函数调用 API:
getItem(id: number): Observable<Item> {
const url = '/item/'+id;
return this.http
.get<Item>(url)
.pipe(catchError(this.handleError<Item>(`getItem id=${id}`)));
}
在“输出”模块的打字稿文件中,我使用了以下函数:
@Input() item: Item;
getItem(): void {
const id = +this.route.snapshot.paramMap.get('id');
this.itemService.getItem(id)
.subscribe(item => this.item = item);
}
路由包含项目的(唯一)ID,我分配给它 - 它是我的请求查询数据库的 ID。 这里是 link 从主页面到编辑页面的代码片段:
<a routerLink="/edit-item/ {{item.id}}">Edit</a>
但是,我收到内部服务器错误。我相信,问题出在 server.js 中的方法“.findById({...})”。我还有其他正在运行的请求(例如检索整个项目列表),因此数据库连接工作正常。非常感谢任何提示!