将对象添加到从角度到 nodejs 的请求正文

Posted

技术标签:

【中文标题】将对象添加到从角度到 nodejs 的请求正文【英文标题】:Add object to request body from angular to nodejs 【发布时间】:2021-06-22 01:00:00 【问题描述】:

我有一个这种格式的 yaml 文件:

Layouts:
        -
          Name: Default Layout
          LayoutId : 1
          ConfiguredSegments:
            LiveA :
                Height : 100
                Id : LiveA
            Ref1A :
                Height : 100
                Id : Ref1A

我的 nodejs 服务器端有一个类似的函数,用于替换我的 yaml 文件中的“ConfiguredSegments”字段:

//function to update specific layout based on LayoutId
export const updateSpecificLayout = (req, res)=>
    const  id  = req.params;
    const  ConfiguredSegments  = req.body;

    const getLayoutList = JSON.parse(JSON.stringify(layoutData)); 

    const layoutToBeUpdated = getLayoutList.Layouts.find((layout) => layout.LayoutId == id );

    findAndReplace(getLayoutList.Layouts,layoutToBeUpdated.ConfiguredSegments,ConfiguredSegments)

      let yaml = YAML.dump(getLayoutList);
     
       fs.writeFileSync("layouts.yaml", yaml, function (err,file)
          if(err) throw err;        
          console.log(`Layout with the id:$id has been updated`);
  )      

    res.send(`Layout with the id:$id has been updated`);
    console.log(`Layout with the id:$id has been updated`);

从角度来看,我正在尝试更新配置的段:

conseg:any;
confseglist:any;

conseg = 
"ConfiguredSegments": 
"SomeSegment": 
"Height": 9999,
"Id": "Hello"



//appSettingsService is my service instance
 this.appSettingsService.updateSpecificLayout ("1").subscribe(data =>    

  this.confseglist= Object.values(data);
  //Here i want to add body as 'conseg ' to my patch request
  
 )

我的http服务类:

我知道我必须在体内传递我的“conseg”。

//Update specific layout based on layout ID
updateSpecificLayout(id: string) 
    const urlLayout = `$this._url/$id`;
    return this.http.patch(urlLayout, conseg ).pipe(catchError(this.errorHandler))

但我不知道如何将正文添加到我的补丁请求中

【问题讨论】:

this.http.patch(urlLayout, conseg) - 这里 conseg 是请求正文。它有什么问题?您想在正文中添加其他内容吗? 我收到此错误“错误 TS2304:找不到名称 'conseg'。35 return this.http.patch(urlLayout, conseg).pipe(catchError(this.errorHandler))” 定义一个额外的参数,如updateSpecificLayout(id: string, conseg: any),并从组件updateSpecificLayout("1", conseg)传入。 【参考方案1】:

这一行:

this.appSettingsService.updateSpecificLayout("1").subscribe(data =>

更新到:

this.appSettingsService.updateSpecificLayout("1", conseg).subscribe(data =>

并将您的服务更新为:

updateSpecificLayout(id: string, conseg: any)

【讨论】:

这适用于我以及 @Micheal D 的更改。

以上是关于将对象添加到从角度到 nodejs 的请求正文的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python API 将正文添加到云调度程序请求

请求不使用正文解析器显示数据

我的 Apache 反向代理将代码添加到从 head 标记获取的 HTML 文件的正文中

如何将 json 列表传递给 Flutter 中的 http 请求(post)正文?

如何将事件绑定到从 AJAX 请求注入的 HTML

Azure 数据工厂 - 尝试将参数添加到 REST API 请求正文中的动态内容