Mongoose 在现有数据库上创建与keystone的多对多关系

Mongoose 在现有数据库上创建与keystone的多对多关系,mongoose,mongodb-query,keystonejs,Mongoose,Mongodb Query,Keystonejs,我想在现有数据库中添加对象引用。 现在我已经启动并运行了两个数据库(域和LabConfig),它们都有我可以从robomongo看到的实例 LabConfigs看起来像这样 id_:12345 (objectId) labConfig: test1 id_:67890 (objectId) labConfig: test2 id_:8787897 (objectId) domainNam

我想在现有数据库中添加对象引用。 现在我已经启动并运行了两个数据库(域和LabConfig),它们都有我可以从robomongo看到的实例

LabConfigs看起来像这样

         id_:12345 (objectId)
         labConfig: test1
         id_:67890 (objectId)
         labConfig: test2
         id_:8787897 (objectId)
         domainName:ggogle.com
         id_:34234234 (objectId)
         domainName:fb.com
域名看起来像这样

         id_:12345 (objectId)
         labConfig: test1
         id_:67890 (objectId)
         labConfig: test2
         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作为一个数组。i、 e.每个labConfigs都与域阵列有关系

在keystone

  • 从何处开始添加keystone,即建立这种多对多关系
  • 我应该在该(init)函数中使用哪个查询来构建此关系
  • 回答1-->我搜索得太多了,我发现把它放进去是个好主意

     view.on('init', function())}
    

    您的
    模型上有
    labconfigs
    字段,并且您已经在其上设置了
    many:true
    。现在,您可以在
    文档上指定
    LabConfig
    id的数组。保存
    域时,可以将
    labConfigs
    设置为等于
    labConfig
    文档ID的数组。您还可以创建
    labConfig
    s本身的数组,而不是它们的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();
            }
        });
    });
    

    我可以在keystone启动时做同样的事情,而不是查看.on(post)。我可以在view.on('init)上做同样的事情吗?你的回答是好的,如果我们得到新的+插入新的域值,而我希望它在开始。当我的两个收藏都退出时,我不知道你在问什么。模型及其信息保存在您的数据库中,因此我认为在keystone启动时无需执行任何操作(
    keystone.on('start')
    ),使用其。userauthlevel是文本数组的数组。如何在userauthlevel中插入项?userauthlevel是一个字符串数组,对于LabConfig数组中的每个对应值,其值为“true/false”。