与JSON有许多关系和循环结构

时间:2014-05-20 13:56:59

标签: json node.js mongodb 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 }});
});

1 个答案:

答案 0 :(得分:0)

好像你有循环引用,这意味着你创建的json在某些地方称它为自我。我不确定这条线是否可能是问题所在:

articles.get(function () {
  return Article.find({categories : { $eq: this }});
});

为什么不尝试使用$ eq中的核心值?