【发布时间】:2020-03-06 01:30:13
【问题描述】:
我无法弄清楚为什么我的值没有从 Angular 服务传递到 express/mongoose PATCH 调用。它进入表格中的文档,但将 currentBid 更新为 null 并且 lastBidTimeStamp 和 bidderId 不会更新。
如果我像这样使用邮递员:
这两个值也不会以这种方式更新。邮递员中只有 currentBid 更新。
我在服务中执行了 console.log(lastBidTimeStamp),它正确输出了日期,因此它在服务中接收了值。
不知道我做错了什么。还在学习。任何帮助表示赞赏。
bidding.service.ts
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)));
【问题讨论】:
-
尝试使用
PUT方法,而不是PATCH方法 -
我将其更新为 PUT on service 和 app.js ,但同样的问题
-
因此请检查您是否在此行
return this.http.patch之前发送了正确的 PATCH 方法主体,例如console.log(bidding) -
如果我 console.log(bidding) 我得到:postimg.cc/HV4Z3BRY
-
所以在 Angular 端看起来没问题 - 你的参数发送正确,你需要在后端正确接受你的参数。试试改成
app.put('/api/listings/:id', (req, res) =>