Mongoose 在现有数据库上创建与keystone的多对多关系
我想在现有数据库中添加对象引用。 现在我已经启动并运行了两个数据库(域和LabConfig),它们都有我可以从robomongo看到的实例 LabConfigs看起来像这样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
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
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”。