开发者问题收集

MongoDB – NodeJs – 超出最大调用堆栈大小

2017-04-06
1398

在 MongoDB/NodeJs(使用 Mongoose)中保存以下架构时,我收到此错误: Uncaught RangeError:超出最大调用堆栈大小。

当我在数组中的架构中添加详细信息时,会发生这种情况:

var mongoose = require('mongoose');

const Attribute = new mongoose.Schema({
  context: String,
  format: String,
  measurand: String,
  location: String,
  unit: String
});

const Value = new mongoose.Schema({
  value: Number,
  attributes: Attribute
});

module.exports = mongoose.model('MeterValue',{
  chargeBoxID: {type: String, ref: 'ChargingStation'},
  connectorId: Number,
  transactionId: Number,
  timestamp: Date,
  values: [Value]
});

有什么想法吗?

提前致谢! Serge。

2个回答

我认为您必须为数组中的模型定义一个额外的模式。

类似于:

const AddressSchema mongoose.Schema({
   address1: { type: String },
   address2: { type: String },
});

...

module.exports = mongoose.model('Person',{
  _id: String,
  name: String,
  address: [ AddressSchema ],
});
Locco0_0
2017-04-07

我还收到错误 Uncaught RangeError: Maximum call stack size reached. 当我尝试保存字段内的对象列表时,发生了这种情况。我发现你不应该按原样传递列表。

我有一个名为 Order 的模型,它接受 Items 列表。 将整个过程分为两个步骤:

  1. 只需创建没有列表的 Order 模型即可
  2. 使用 .findByIdAndUpdate
    const order = await OrderModel.create({
                  status: "initiated",
                  createdAt: new Date(),
                });

    await OrderModel.findByIdAndUpdate(order, {
              $push: {
                items: cartItems,
              },
            });

这里的 items 是模型内接受项目列表的字段。 这样,你就不会遇到超出最大堆栈大小的问题。希望对你有帮助。

Kishan Kumar
2023-09-15