我正在学习如何创建一个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(结果);
由于
答案 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
})
...
我希望这有助于解决您的问题。