MongoDb NodeJs RangeError:推送消息时超出了最大调用堆栈大小

时间:2018-01-17 22:28:58

标签: mongodb angular express mongoose

我正在学习如何创建一个MEAN应用程序,当我尝试将消息推送到用户模型中的消息数组时,我遇到了问题。 我可以创建一个新消息并传递用户对象,但在尝试将消息对象传递到user.messages数组时,我在控制台中出现错误'RangeError:超出最大调用堆栈大小'。

我将发布我的用户和消息模型以及消息路由代码。

消息模型

[["A","B"],"Joe"]

用户模型

let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let User = require('./user');


let schema = new Schema({
    content: {
        type: String,
        required: true
    },
    user: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'User'
    }
});

module.exports = mongoose.model('Message', schema);

我的路线代码

let mongoose = require('mongoose');
let Schema = mongoose.Schema;
let mongooseUniqueValidator = require('mongoose-unique-validator');

let schema = new Schema({
    firstName: {
        type: String,
        required: true
    },
    lastName: {
        type: String,
        required: true
    },
    password: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true,
        unique: true
    },
    messages: [{
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Message'
    }]
});

schema.plugin(mongooseUniqueValidator);

module.exports = mongoose.model('User', schema);

我认为问题来自后期路线

user.messages.push(结果);

由于

1 个答案:

答案 0 :(得分:0)

您在模式中使用了refs,因此您应该存储 _id 值而不是整个对象:

 render() {
        return (
            <div className={'ZoneLayer'}>
                {
                    this.zones.map(zone => {
                        return (
                            <Polygon key={zone['id']}
                                     id={zone['id']}
                                     positions={zone['coordinates']}
                                     color={zone['available'] ? "#6dfdae" : "#dddddd"}
                                     fillOpacity={this.props.enableTransparency ? 0.4 : 1} >
                                <Tooltip direction={"top"} sticky={true} className={"zone-tooltip"} >
                                    <span>{zone['text']}</span>
                                </Tooltip>
                            </Polygon>
                        );
                    })
                }
            </div>
        )
    }

...和

...

let message = new Message({
  content: req.body.content,
  user: user._id
})

...

我希望这有助于解决您的问题。