使用nodejs和mongoose插入新条目的最佳做法是什么

时间:2014-12-09 20:01:49

标签: node.js mongodb mongoose

我有两种模式:

这是第一个:

var CommentSchema = new Schema({
    title: {
        type: String
    },
    owner: {
        type: Schema.ObjectId,
        ref: 'User'
    }
});

这是第二个:

var UserSchema = new Schema({
    name: {
        type: String
    },
    comments: [{
        type: Schema.ObjectId,
        ref: 'Comment'
    }]
});

确实有很多评论。所以,我在所有者的评论数组中添加每个评论的ID。目标是创建一个简单的功能,例如"列出我的评论"。 实际上这些评论非常简洁,我使用此代码添加新评论:

var comment = ...
comment.title = "title";
comment.owner = req.user
comment.save(function(err) {
    if (err)
        ...
    else {
        User.findOne({ _id: req.user._id }, function (err, tmpUser){
            tmpUser.comments.push(comment);
            tmpUser.save(function(err) {
                if (err)
                    ...
                else {
                    //END
                }
            });
        });
    }
}

如何优化此代码?是否可以直接优化模型?谢谢!

1 个答案:

答案 0 :(得分:1)

为什么不简单地查询Comments集合?如果您在有大量评论时担心性能,可以(并且应该)索引所有者字段。

db.comments.ensureIndex( { owner: 1 } )

然后使用mongoose:

Comment.find({ owner: req.user._id }, function(err, comments) {
  // do something with comments
});