Angular 角度服务未向后端传递值-标头错误问题
我不明白为什么我的值没有从angular服务传递到express/mongoose补丁调用。它将其保存到表中的文档,但将currentBid更新为null,将lastBidTimeStamp和bidderId更新 如果我像这样使用邮递员: 这两个值也不会以这种方式更新。只有邮递员中的currentBid更新 我在服务中创建了console.log(lastBidTimeStamp),它正确地输出了日期,所以它在服务中接收值 不知道我做错了什么。还在学习。感谢您的帮助 投标服务Angular 角度服务未向后端传递值-标头错误问题,angular,express,mongoose,Angular,Express,Mongoose,我不明白为什么我的值没有从angular服务传递到express/mongoose补丁调用。它将其保存到表中的文档,但将currentBid更新为null,将lastBidTimeStamp和bidderId更新 如果我像这样使用邮递员: 这两个值也不会以这种方式更新。只有邮递员中的currentBid更新 我在服务中创建了console.log(lastBidTimeStamp),它正确地输出了日期,所以它在服务中接收值 不知道我做错了什么。还在学习。感谢您的帮助 投标服务 import {
import { Injectable } from '@angular/core';
import { HttpClient, HttpParams } from '@angular/common/http';
import { Router } from '@angular/router';
import { Subject } from 'rxjs';
import { Bidding } from './bidding.model';
@Injectable({ providedIn: 'root' })
export class BiddingService {
constructor(private http: HttpClient, private router: Router) { }
submitBid(auctionId: string, currentBid: string, lastBidTimeStamp: Date, userId: string) {
const bidding: Bidding = {
id: auctionId,
bidderId: userId,
lastBidTimeStamp: lastBidTimeStamp,
bidValue: currentBid
};
return this.http.patch(`http://localhost:3000/api/listings/${bidding.id}`, bidding,
);
}
}
app.js
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization");
res.header("Access-Control-Allow-Methods", "GET, POST, PATCH, PUT, DELETE, OPTIONS");
next();
});
app.patch('/api/listings/:id', (req, res) =>
Post.update(
{id: req.query.id},
{currentBid: req.body.currentBid},
{lastBidTimeStamp: req.body.lastBidTimeStamp},
// {bidderId: req.userData.userId}
).then( user => {
console.log(user);
res.json(user);
// res.sendStatus(200);
})
.then( user => {
console.log(res.json(user));
res.json(user);
// res.sendStatus(200);
}).catch(err => console.log(err)));
看起来不需要在方法内部调用
Post.update()
方法。
此外,您的数据来自前端:
将HTTP PUT请求路由到具有指定路径的指定路径
回调函数
因此,您的代码应该如下所示:
app.put('/api/listings/:id', (req, res) {
// Retrieve the data to insert from the PUT body
var data = [
req.body.id,
req.body.bidderId,
req.body.bidValue
];
// Then you can do what you want with your data
});
我通过以下put请求获得了它
app.put('/api/listings/:id', (req, res) => {
Post.findByIdAndUpdate({ _id: req.params.id},
{
currentBid: req.body.currentBid,
lastBidTimeStamp: Date.now(),
bidderId: req.body.bidderId
}, function(err, docs) {
if(err) res.json(err);
else{
console.log(docs)
}
});
});
尝试使用
PUT
方法,而不是PATCH
方法我将其更新为放到service和app.js上,但同样的问题是检查您是否发送了正确的补丁方法体,如console.log(bidding)
在此行之前如果我是console.log(bidding),则返回此.http.PATCH
我明白了:所以在角度端看起来没问题——你们的参数发送正确,你们需要在后端正确地接受你们的参数。尝试更改为app.put('/api/listings/:id',(req,res)=>