【发布时间】:2014-07-08 20:04:49
【问题描述】:
我正在尝试使用 mongoose 创建一个经典的文章/类别关联。
一切正常,但由于我试图将查询结果公开为 JSON,我收到 Converting circular structure to JSON 错误。
我知道这个问题与交叉引用模型有关,但我不知道如何解决这个问题。
这是我的模型架构。
var ArticleSchema = new Schema({
created: {
type: Date,
default: Date.now
},
title: {
type: String,
default: '',
trim: true
},
content: {
type: String,
default: '',
trim: true
},
user: {
type: Schema.ObjectId,
ref: 'User'
},
categories: [{
type: Schema.ObjectId,
ref: 'Category'
}]
});
ArticleSchema.statics.load = function(id, cb) {
this.findOne({
_id: id
}).populate('user', 'name username').populate('categories', 'title').exec(cb);
};
/**
* Category Schema
*/
var CategorySchema = new Schema({
created: {
type: Date,
default: Date.now
},
title: {
type: String,
default: '',
trim: true
},
user: {
type: Schema.ObjectId,
ref: 'User'
}
},
{
toObject: { virtuals: true },
toJSON: { virtuals: true }
});
/**
* Virtual Schema
*/
var articles = CategorySchema.virtual('articles');
articles.get(function () {
return Article.find({categories : { $eq: this }});
});
【问题讨论】:
-
如果您只想在典型的关系建模中构建结构,为什么还要使用 MongoDB?也许如果你给出了你想要解决的实际问题,那么你会得到一个解决方案(适合 NoSQL 建模响应)。否则,只需将关系建模与支持它的数据库引擎一起使用。或者您实际上可以考虑不使用关系建模,这就是您首先应该在这里的原因。
标签: json node.js mongodb mongoose