无法访问从猫鼬fineOne()返回的json中的键

时间:2018-11-20 18:33:23

标签: javascript node.js json mongodb mongoose

我遇到一个奇怪的问题。 我已经通过使用model.findOne()使用mongoose在mongoDB中搜索并找到了一个文档,如下所示:

class Board {
  protected int cur_x, cur_y, rows, cols;

  public Board(int rows, int cols) {
    this.rows = rows;
    this.cols = cols;
    this.setRandomPosition();
  }

  public void setRandomPosition() {
    cur_x = (int) Math.round(Math.random() * cols);
    cur_y = (int) Math.round(Math.random() * rows);
  }

  public void tryMove(int x, int y) throws IllegalMoveException {
    if (Math.abs(x-cur_x)>1 || Math.abs(y-cur_y)>1) {
      throw new IllegalMoveException(...);
    }
    // bounds check omitted here, but: ensure that
    // 0<=x<cols and 0<=y<rows, otherwise throw an
    // IllegalMoveException as well.
    cur_x = x;
    cur_y = y;
  }
  // with getters for the current x and y, etc.
}

现在,一切工作到现在为止,它将发送我期望得到的json。看起来像这样:

Model.findOne({
      ID: ID
    }).then(existingDoc => {
      console.log(existingDoc );
      res.send(existingDoc );
    });

问题是当我尝试访问这些值时,例如:

{
  "_id": "5bf388cf170a974770c5c942",
  "ID": "11/2018",
  "date": "2018-11-20T04:08:47.997Z",
  "total": {
    "total_market_cap": [
      64301.06256298704
    ]
  }
}

我不确定。也尝试过使用:

 console.log(existingDoc.total);

我仍然不确定。

对于_id和__v以外的所有内容,它均返回undefined。就像它是一个空对象,尽管不是。

1 个答案:

答案 0 :(得分:2)

您能否尝试将其转换为对象

Model.findOne({
      ID: ID
    }).then(existingDoc => {
      console.log(existingDoc );
      let newdoc = existingDoc.toObject();
      console.log(newdoc.myProperty)
      res.send(existingDoc );
    });