gpt4 book ai didi

json - NodeJS 和 HTTP : How to send JSON content in a POST/PUT call as a string rather than creating a new key

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:06 25 4
gpt4 key购买 nike

我构建了一个 API 服务,它将处理 REST 请求并使用它们在 MongoDB 实例上执行 CRUD 操作。该应用程序是独立的(根据设计),并且应该是任何调用它的东西的直通。我在 Angular 中构建的另一个应用程序正在调用此 API 来与我的 MongoDB 实例交互。我一直在尝试从表单构建 JSON 有效负载,效果很好。我得到类似的东西:

{ "_id":"111111111", "name":"herp", "address":"derp", "city":"foo", "state":"bar", "zip":"11111", "phone":"111-222-3333"}    

然后,我尝试获取该 JSON 并将其发送到服务,但是一旦服务获取了它,转换过程中就会丢失一些内容,并且包含 JSON 对象的变量名将被转换为请求中的实际键,并以 JSON 作为其值。我这样调用该服务:

const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Cache-Control': 'no-cache' })
};

updateStuff(update){
console.log("Sending: " + JSON.stringify(update) + " for update");
return this.http.put('http://localhost:3000/api/test/_update', {dbName:"testDb",collection:"testing",update}, httpOptions);
}

哪些日志:

Sending: {"name":"blah","address":"111 Anystreet","city":"MyCity","state":"NY","zip":"11111","phone":"555-111-2222","_id":"5ba914df13236f7a6ea3e233"} for update

所以我知道在调用之前,数据是好的。然而,另一方面,它在获取数据时看到以下内容:

Received request: {"dbName":"testDb","collection":"testing","update":{"name":"blah","address":"111 Anystreet","city":"MyCity","state":"NY","zip":"11111","phone":"555-111-2222","_id":"5ba914df13236f7a6ea3e233"}}

而不是我想要的,如下:

{"dbName":"testDb","collection":"testing","name":"blah","address":"111 Anystreet","city":"MyCity","state":"NY","zip":"11111","phone":"555-111-2222","_id":"5ba914df13236f7a6ea3e233"}

如何告诉 HTTP 请求发送数据本身,而不是构造一个名为“update”的新 key 并将有效负载作为其值粘贴在那里?我尝试了 JSON.stringify,但最终发送了相同的内容,但在所有括号前面都有一堆反斜杠。它仍然以名称为“update”的 key 发送所有内容。任何帮助将不胜感激。

最佳答案

您的问题在这里:

{dbName:"testDb",collection:"testing",update}

上面的语句是对此的简写:

{dbName:"testDb",collection:"testing",update:update}

您要做的是this :

{dbName:"testDb",collection:"testing",...update}

这是它的简写:

const data = {dbName:"testDb",collection:"testing"};
for (let key in update) {
if (update.hasOwnProperty(key)) {
data[key] = update[key];
}
}

关于json - NodeJS 和 HTTP : How to send JSON content in a POST/PUT call as a string rather than creating a new key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52563224/

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