我想在现有数据库中添加对象引用。 现在我有两个数据库(域和实验室)和&跑步&他们都有我从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 - >我搜索得太多了弄清楚在
中使用它是个好主意 view.on('init', function())}
答案 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();
}
});
});