0

我正在尝试将帖子添加到一系列主题并以 json 格式发布,一切正常,但继承并没有达到我想要的效果。

var topicArray = [],
    postArray = [];

// Create Topic and Post Array
topics.forEach(function(topic) {

    topicArray.push({
        "id": topic._id,
         "title": topic.title,
        "slug": topic.slug,
        "lastPost": topic.updatedAt,
        "posts": postArray
    });

    var posts = topic.posts;

    posts.forEach(function(post) {

        postArray.push({
            "id": post._id,
            "author": post.author,
            "body": post.body,
            "date": post.date,
            "edited": post.updatedAt
        });

    });
});

它总是将所有帖子添加到所有主题,而不是将帖子仅添加到父主题。它们是猫鼬中的子文档,所以我认为如果它有效,那将是合乎逻辑的。因为它不起作用,所以我在帖子中添加了一个“主题”键,我在 if 中使用它来仅在帖子相同的情况下将帖子推送到数组,如下所示:

if(topic.id == post.topic) {
    postArray.push({
        "id": post._id,
        "author": post.author,
        "body": post.body,
        "date": post.date,
        "edited": post.updatedAt
    });
}

但它只是最终没有得到任何帖子。我发现我用小写保存了它,所以我把它改成了

if(topic.id.toUpperCase() == post.topic) {
    postArray.push({
        "id": post._id,
        "author": post.author,
        "body": post.body,
        "date": post.date,
        "edited": post.updatedAt
    });
}

它最终再次拥有所有这些......这个问题让我现在尝试了 4 个小时,我在这里错过了一些非常基本的东西,是吗?

4

1 回答 1

1

您永远不会为主题创建新数组。因此,您的所有帖子都会插入到分配给所有主题的同一数组中。

var topicArray = [];

// Create Topic and Post Array
topics.forEach(function(topic) {

    // create a new postArray for each topic
    var postArray = []

    topicArray.push({
        "id": topic._id,
         "title": topic.title,
        "slug": topic.slug,
        "lastPost": topic.updatedAt,
        "posts": postArray
    });

    var posts = topic.posts;

    posts.forEach(function(post) {

        postArray.push({
            "id": post._id,
            "author": post.author,
            "body": post.body,
            "date": post.date,
            "edited": post.updatedAt
        });

    });
});
于 2013-09-10T14:57:20.953 回答