在现有数据库

时间:2017-04-12 13:12:25

标签: mongoose mongodb-query keystonejs

我想在现有数据库中添加对象引用。     现在我有两个数据库(域和实验室)和&跑步&他们都有我从robomongo可以看到的实例。

LabConfigs看起来像这样

         id_:12345 (objectId)
         labConfig: test1
         id_:67890 (objectId)
         labConfig: test2

DomainName看起来像这样

         id_:8787897 (objectId)
         domainName:ggogle.com
         id_:34234234 (objectId)
         domainName:fb.com

现在,当我使用以下架构启动我的keystone时。

****************LabConfigs***********************
var LabConfigs = new keystone.List('LabConfigs');

LabConfigs.add({
 configName: {type: Types.Text, required: true, initial: true, index: true}
});
 LabConfig.defaultColumns = 'configName';
 LabConfig.register();

************************************************

这是我的第二个数据库。

var Domain = new keystone.List('Domain');

Domain.add({
  domainName: {type: Types.Text, required: true, initial: true, index: true},
  labConfigs :{type: Types.Relationship, ref: 'LabConfigs',required: false,many: true},
   userauthlevel:{ type: Types.TextArray}
  });


Domain.defaultColumns = 'domainName';
Domain.register();

现在我想将域数据库中的labConfigs添加为数组。即每个labConfigs与域数组有关系。

在keystone中

  1. 在keystone中添加哪些内容即建立多对多的关系?
  2. 我应该在该(init)函数中构建此关系的哪个查询?
  3. 答案1 - >我搜索得太多了弄清楚在

    中使用它是个好主意
     view.on('init', function())}
    

1 个答案:

答案 0 :(得分:1)

您的labconfigs型号上有Domain字段,并且您已在其上设置many: true。现在,您可以在LabConfig文档上指定Domain个ID的数组。保存Domain时,您可以将labConfigs设置为等于labConfig个文档ID的数组。您还可以自己创建labConfig个数组,而不是ID。 Keystone将以相同的方式保存对象的引用。

view.on('post', function (next) {
    var labConfigIDs = []; // Array of labConfig IDs, created however you want
    domain.getUpdateHandler(req).process({
        labConfigs: labConfigIDs
    }, {
        flashErrors: true,
        errorMessage: 'There was a problem updating your domain.'
    }, function(err) {
        if (err) {
            req.flash("error", saveErr.message);
            return next();
        } else {
            req.flash('success', 'Your changes have been saved.');
            return next();
        }
    });
});