我构建了一个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”的新密钥并将有效载荷作为其值粘贴在其中?我尝试了JSON.stringify,但是最终发送了同样的东西,但是所有括号前面都带有一串反斜杠。仍将其全部发送给一个名称为“ update”的密钥。任何帮助将不胜感激。
答案 0 :(得分:3)
您的问题在这里:
size
上面的陈述是这个的简写:
{dbName:"testDb",collection:"testing",update}
您要做的是this:
{dbName:"testDb",collection:"testing",update:update}
这是它的简写:
{dbName:"testDb",collection:"testing",...update}