Sails.js res.json 使用 nested-pop 时不返回深度属性

Sails.js res.json not returning deep properties when using nested-pop

我有这段代码可以通过使用 nested-pop:

来获取一些具有深层嵌套关联的股票数据
Stock.find({limit:100, sort:'name ASC'})
  .populate('scans', {limit:1,sort:'createdAt DESC'})
  .then((stocks) => {
    return nestedPop(stocks, {
      scans: ['values']
    })
  }).then(stocks => {
    console.log(stocks[0].scans[0]);
    res.json(stocks);
  })

在服务器控制台中记录扫描并打印 values 数组。但是 res.json returns 扫描的股票都缺少 values 数组。

预期输出:

[{
  id: 1,
  scans: [
    {
      id: 1,
      values: [
        {
          id: 1,
          value: 0.5,
          type: 1
        },
        ...
      ]
    }
  ]
}, ...]

返回的输出:

[{
  id: 1,
  scans: [
    {
      id: 1,
    }
  ]
}, ...]

错误似乎与对象的深度无关,因为我用一些更深的测试对象对其进行了测试,并且返回了所有内容。我只是不明白如果 它在那里 .

为什么 res.json 不返回它

更新:

我现在进行了其他测试,发现 .toObject.toJSON 调用单个股票都会导致服务器端的值消失。并且因为 res.json 正在对传递的对象调用 .toJSON 它也不会出现在浏览器中。

nestedPop 返回的值无法被 .toJSON 正确解析,因为它们已经被转换。 我通过在将所有股票传递到 nestedPop 之前转换所有股票来解决这个问题,所以工作代码是:

Stock.find({limit:100, sort:'name ASC'})
  .populate('scans', {limit:1,sort:'createdAt DESC'})
  .then((stocks) => {
    stocks = stocks.map((s) => s.toJSON());
    return nestedPop(stocks, {
      scans: ['values']
    })
  }).then(stocks => {
    console.log(stocks[0].scans[0]);
    res.json(stocks);
  })

现在一切都记录在服务器端并传递给浏览器。