gpt4 book ai didi

node.js - 如何严格指定返回类型 Angular4/ionic3

转载 作者:太空宇宙 更新时间:2023-11-04 00:12:01 27 4
gpt4 key购买 nike

请我尝试指定一个特定的返回类型,以仅包含我使用 nodejs 从 mongodb 服务器获取的数据。

这些是我面临的问题: 1.nodejs服务器总是返回一个json数据数组,这使得我必须以索引(data[0])而不是点符号(data.)的形式访问ionic3中的数据。请问我该如何解决这个问题? 2.从数据库返回的数据将大量数据转储回客户端,我想使用我导入到服务中的 typescript 接口(interface)来过滤这些数据。我将展示我的代码摘录

ProfileModel接口(interface)

**(profileModel.ts)**

export interface ProfileModel{
name : {
firstName : string,
lastName : string
},
login : {
username: string
},

sex : string,
address: string,
status: string,
coverageArea: string,
email : string,
position: string,
location : {
latitude: number,
longitude: number
}
}

配置文件服务提供者功能

**(profile.ts)**

import { ProfileModel } from './profileModel';
getMyProfile(data){
return this.http.get<ProfileModel>(this.apiUrl + data)
.pipe(catchError(this.handleError))
}



private handleError(error: HttpErrorResponse){
if(error.error instanceof ErrorEvent){
// A client-side or network error occured
console.error("An error occured: ", error.error.message)
} else {
// The backend returned unsuccessful response
// The response body may contain clues as to what happened
console.error(`Backend returned code ${error.status}, `+
`body was: ${error.error}`);
}
return new ErrorObservable("Network Error, please try again later.")
}

配置文件路由服务器端代码

//Set up
let express = require("express");
let router = express.Router();

let staffModel = require("../schema");


router.get("/profile/:user", function(req, res){
//let check = req.params();
staffModel.find({"login.username": req.param("user")})
.then(data=> {
res.setHeader("Content-Type", "application/json");
let check = JSON.stringify(data);
res.send(check);
})
.catch(err=> res.send({"error": "There's an issue with the server."}))
});

module.exports = router;

即使有了这些,我仍然得到一个数据转储,我可以通过索引访问它,而且它会转储我不需要的数据库中的所有不必要的数据

请提供任何帮助,我们将不胜感激

最佳答案

您必须使用 httpClient,而不是 http - 那么您不需要 JSON.stringify

如果你得到一个独特的值,你可以简单

//I supouse that you received "data:[{...}]"
getMyProfile(data){
return this.http.get<ProfileModel>(this.apiUrl + data)
.map(result=>{ //don't return result, just result.data[0]
return result.data[0];
})
.pipe(catchError(this.handleError))
}

如果你得到一个数组-几个数据-,你可以

// data:[{...},{...}]
getMyProfile(data){
return this.http.get<ProfileModel>(this.apiUrl + data)
.map(result=>{ //don't return result, just result.data
return result.data
})
.pipe(catchError(this.handleError))
}

此外,您还可以转换数组

// data:[{id:0,val:'aaa',val2:'bbb'},{id:1,val:'ccc',val2:'ddd'}]
getMyProfile(data){
return this.http.get<ProfileModel>(this.apiUrl + data)
.map(result=>{ //don't return result, just result.data
//but, transform the data
return result.data.map(d=>{ //e.g. I don't want "val2"
id:d.id,
val:d.val
})
})
.pipe(catchError(this.handleError))
}

关于node.js - 如何严格指定返回类型 Angular4/ionic3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49045911/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com