如何在猫鼬/mongodb中填充/链接数据



我定义了 3 个模式:

var ChangeSetSchema = new Schema({
    id: String,
    ...
    workitems: [{  type: mongoose.Schema.Types.ObjectId, ref:'WorkItem' }]
});
var WorkItemSchema = new Schema({
    id: String,
    ...
});

"ChangeSetSchema"中数组"workitems"内的 id 将与 "WorkItemSchema" 的 "id" 相同。我想知道如何保存数据,例如变更集架构:

router.route('/changeset')
    .post(function(req, res) {
        Changeset.find({ id: req.body.id }, function(err, changeset) {
            if (err) {
                res.send(err);
            } else {
                var changeset = new Changeset();
                changeset.id = req.body.id;
                changeset.url = req.body.url;
                changeset.author = req.body.author;
                changeset.createddate = req.body.createddate;
                changeset.comment = req.body.comment;
                //changeset.workitems = req.body.workitems;
                changeset.save(function(err) {
                    if (!err) {
                        Changeset.find({})
                            .populate('workitems')
                            .exec(function(error, changesets) {
                                console.log(JSON.stringify(changesets, null, "t"));
                                res.send('1');
                            })
                    }
                });
            }
        });
    })

我是否必须在每次保存"变更集"时创建和保存"工作项"对象,或者我可以告诉mongodb这两者是链接的?

我在这里使用Express.js的完整代码:https://github.com/Trigu/ReleaseNotes/tree/master

router.route('/changeset')
    .post(function(req, res) {
        Changeset.findOne({ id: req.body.id }, function(err, changeset) {
            if (err) {
                res.send(err);
            } else {
                //get Id before new
                if(changeset){
                var changesetWorkitemsId=changeset.workitems;
                 }
                //creating new object here
                var changeset = new Changeset();
                changeset.id = req.body.id;
                changeset.url = req.body.url;
                changeset.author = req.body.author;
                changeset.createddate = req.body.createddate;
                changeset.comment = req.body.comment;
                //set Id
                if(changesetWorkitemsId){
                changeset.workitems = changesetWorkitemsId;
                }else{
                 changeset.workitems = req.body.workitems;
                }  
                changeset.save(function(err) {
                    if (!err) {
                        Changeset.find({})
                            .populate('workitems')
                            .exec(function(error, changesets) {
                                console.log(JSON.stringify(changesets, null, "t"));
                                res.send('1');
                            })
                    }
                });
            }
        });
    })

最新更新