如何给JS对象赋值?

时间:2019-08-05 15:55:07

标签: javascript ecmascript-6 error-handling

在两种情况下都试图将值赋给主体,因此响应有时包含有效负载,但是当有效负载出现时,它会在我粘贴时将有效负载添加为嵌套对象

main.js

const logError = (message, resp) => {
  const logErrorPayload = {
    status: resp.status,
    body : resp || resp.payload
  };
  logger().error(message,logErrorPayload);
};

响应

{"level":50,"time":1565018976583,"pid":64,"hostname":"76b538d1a1fc","msg":"Error_V1 {\"status\":500,\"body\":{\"status\":500,\"payload\":{\"status\":500,\"title\":\"Internal Server Error\",\"detail\":\"Drug prices are not valid\"}}}","v":1}

预期

{"level":50,"time":1565018976583,"pid":64,"hostname":"76b538d1a1fc","msg":"Error_V1 {\"status\":500,\"body\":{\"status\":500,\"title\":\"Internal Server Error\",\"detail\":\"Drug prices are not valid\"}}}","v":1}

2 个答案:

答案 0 :(得分:0)

您可能只是在寻找

const logError = (message, resp) => {
  const logErrorPayload = {
    status: resp.status,
    body: resp.payload,
  };
  logger().error(message, logErrorPayload);
};

resp ||使用整个resp对象作为值,至少在resp是真实值(当它具有属性并因此是对象时才是期望值)时使用

也许您打算使用resp && resp.payload,它可以处理respnull的情况,但是您需要为访问.status做同样的事情:

const logError = (message, resp) => {
  const logErrorPayload = {
    status: resp && resp.status,
    body: resp && resp.payload,
  };
  logger().error(message, logErrorPayload);
};

或者也许,考虑到resp没有其他需要通过构造单独的logErrorPayload而忽略的属性,您可以做到

const logError = (message, resp) => {
  logger().error(message, resp);
};

答案 1 :(得分:-2)

Object.assign()方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

const target = {a:1,b:2}; const source = {b:4,c:5};

const returnTarget = Object.assign(target,source);

console.log(目标); //预期的输出:对象{a:1,b:4,c:5}

console.log(returnedTarget); //预期的输出:对象{a:1,b:4,c:5}