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

fykwrbwg  于 9个月前  发布在  Go
关注(0)|答案(2)|浏览(78)

我在MongoDB/NodeJs中保存下面的模式时得到这个错误(使用Mongoose):Uncaught RangeError:超过最大调用堆栈大小。
当我在Array中的schema中添加详细信息时,会发生这种情况:

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.

yizd12fk

yizd12fk1#

我认为你必须为数组中的模型定义一个额外的模式。
例如:

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

...

module.exports = mongoose.model('Person',{
  _id: String,
  name: String,
  address: [ AddressSchema ],
});
4nkexdtk

4nkexdtk2#

我也得到了错误Uncaught RangeError: Maximum call stack size exceeded.这发生在我试图保存字段中的对象列表时。我想出来的是,你不应该通过名单,因为它是。
我有一个名为Order的模型,它接受Items的列表。将整个过程分为两个步骤:
1.只需创建您的Order模型,无需列表
1.使用.findByIdAndUpdate

const order = await OrderModel.create({
                  status: "initiated",
                  createdAt: new Date(),
                });

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

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

相关问题