json - NodeJS 和 HTTP:如何在 POST/PUT 调用中将 JSON 内容作为字符串发送而不是创建新密钥
问题描述
我构建了一个 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”的密钥中。任何帮助将不胜感激。
解决方案
你的问题在这里:
{dbName:"testDb",collection:"testing",update}
上面的语句是对此的简写:
{dbName:"testDb",collection:"testing",update:update}
您要做的是:
{dbName:"testDb",collection:"testing",...update}
这是这个的简写:
const data = {dbName:"testDb",collection:"testing"};
for (let key in update) {
if (update.hasOwnProperty(key)) {
data[key] = update[key];
}
}
推荐阅读
- r - R中的SVM - 分类新实例
- r - 用data.table中的连续序列替换零碎的数字序列
- javascript - 如果表已经超过一行,如何使用 jquery 向表中添加新行
- c# - 是否可以从 UWP 应用程序启动批处理文件?
- sql - 参加过学位课程每门课程考试的学生
- excel - 如果 rpdate = False 则 Line 不断崩溃 Excel
- python - (P, Q) 和 (R,) 之间的曼哈顿距离
- c# - 从数据库下载的 Pdf 文件,但我无法打开它,“加载 PDF 文档失败。” 错误
- xcode - 如何构建 AWSiOSSDKv2?
- java - 在jlabel中水平显示循环