我想按ID查询数据库以显示数据。我遇到此错误。“未处理的承诺拒绝:无法读取undefined(阅读“isProxied”)""的属性。可能有人遇到了此错误。请告诉我如何解决此错误。
服务器
const express = require('express');
const lists = require('../models/lists');
const Description = require('../models/description');
router.get('/descriptions', (req, res) => {Description.find({ active: true }).then(descriptions => res.json(descriptions))});
router.get('/description-by-id', (req, res) => {let descriptionId = req.query.param1;
Description.findById(descriptionId).then( description => res.json(description));
});
router.get('/lists', (req, res) => {lists.find({ active: true }).then(lists => res.json(lists))`});module.exports = router;
TS файл
import { HttpClient } from '@angular/common/http';
import { Component, Input, OnInit } из '@angular/core';
import { ScrollingModule } из '@angular/cdk/scrolling';
export interface List {
userId: String;
userId: String;
number: Number;
treatments: Array<any>;}
selector: 'app-invoices-form',
templateUrl: './invoices-form.page.html',
styleUrls: ['./invoices-form.page.scss'],})
export class InvoicesFormPage implements OnInit {
@Input() lists: List;
descriptionsArr: Array<any> = [];
constructor( private http: HttpClient, private scroll: ScrollingModule) {}
ngOnInit() {
if (this.lists.descriptions && this.lists.descriptions.length \> 0) { for (let item of this.lists.descriptions){ this.http.get\<any\>(`http://localhost:8100/description-by-id?
parameter1=${item.descriptionId})
.subscribe((result: any) =\> { this.descriptionsArr.push({
id: item.descriptionId,
name: result.name,
surname: result.surname
});
});
}
}
}
}
1条答案
按热度按时间8tntrjer1#
您提供的代码是使用Express框架在Node.js中编写的服务器端代码,以及使用Angular框架在TypeScript中编写的客户端代码。
在服务器端,您已定义了多个路由来处理GET请求。第一个路由“/descriptions”将返回Description集合中“active”字段设置为true的所有文档。第二个路由“/description-by-id”将返回Description集合中与作为查询参数传递的ID匹配的文档。第三个路由“/lists”将返回列表集合中“active”字段设置为true的所有文档。
在客户端,您已经定义了一个实现OnInit生命周期挂钩的类“InvoicesFormPage”。在ngOnInit方法中,您将检查“lists”对象是否具有“descriptions”属性,以及它是否是一个包含多个元素的数组。然后,您将迭代"descriptions“数组,并向服务器上的”/description-by-id“路由发出GET请求。将"descriptionId“作为查询参数传递。服务器的响应是一个具有属性”name“和”surname“的对象,然后将其推送到" descriptionsArr”数组。
看起来问题是服务器没有运行,或者客户端指向了不同的服务器。
确保服务器正在运行,并且通过检查客户端上http.get()方法中的IP地址和端口,客户端指向正确的服务器。IP地址应与运行服务器的计算机的IP匹配,端口应与服务器侦听的端口匹配。
此外,请确保您在服务器端定义的路由与您在客户端调用的路由匹配。
如果不提供有关当前设置和错误性质的更多信息,就很难给予更具体的解决方案。