我有以下结构:
{
id: 23423-dsfsdf-32423,
name: Proj1,
services: [
{
id:sdfs-24423-sdf,
name:P1_Service1,
products:[{},{},{}]
},
{
id:sdfs-24jhh-sdf,
name:P1_Service2,
products:[{},{},{}]
},
{
id:sdfs-2jnbn3-sdf,
name:P1_Service3,
products:[{},{},{}]
}
]
},
{
id: 23423-cxcvx-32423,
name: Proj2,
services: [
{
id:sdfs-xvxcv-sdf,
name:P2_Service1,
characteristics:[{},{},{}]
},
{
id:sdfs-xvwqw-sdf,
name:P2_Service2,
characteristics:[{},{},{}]
},
{
id:sdfs-erdfd-sdf,
name:P2_Service3,
characteristics:[{},{},{}]
}
]
}
使用quickForm创建表单此表单和插入表单没有问题。 但我无法弄清楚(并尝试阅读每个教程和指令,没有任何工作)如何创建一个填充所有字段的更新表单(还需要扩展和填充服务和特征数组:
当然,正如我所说,在更新中我需要将服务和特性扩展到所有领域的正确尺寸。 但如果我能理解如何填写表单字段,我就能理解自己如何花费数组......
我试过了:
{{> quickForm collection="Projects" id="updateProjectForm" collection="Projects" type="method" class="update-project-form" doc=project }}
使用:
import SimpleSchema from 'simpl-schema';
import { Template } from 'meteor/templating';
import { ReactiveVar } from 'meteor/reactive-var';
// Attaching the subscription to the template so we can reuse it
Template.ProjectSingle.onCreated(function(){
var self = this;
self.autorun(function(){
var id = FlowRouter.getParam('id');
self.subscribe('projectSingle', id);
});
});
Template.ProjectSingle.helpers({
project: ()=> {
var id = FlowRouter.getParam('id');
console.log(Projects.findOne({_id: id}));
return Projects.findOne({_id: id});
}
});
我甚至无法看到console.log()打印。
此列表中的解决方案并未使流星服务器崩溃......我尝试过的其他所有内容都会因许多错误而崩溃服务器
也许我需要提一下,我使用了部分内容,所以也许JS文件存在问题,但我并不这么认为是正在读取onCreated方法。
10倍。
编辑:
我已删除更新模板的部分内容,现在它位于根模板中,并带有自己的JS,方法如下:
projectDoc: ()=> {
var id = FlowRouter.getParam('id');
console.log("Update: " + Projects.findOne({_id: id}));
return Projects.findOne({_id: id});
}
现在我可以看到正在调用此方法,但由于某种原因,它被调用了两次。首先使用正确的数据,然后得到未定义的,所以我仍然没有得到任何字段,但如果我能找到为什么它被调用两次,我将解决第一级表单(没有服务等等)
答案 0 :(得分:0)
解决了它(不确定这是最好的方法,因为我仍然有两次调用方法,但现在这样做了:
projectDoc: ()=> {
var id = FlowRouter.getParam('id');
if(Projects.findOne({_id: id}) != null){
console.log(Projects.findOne({_id: id}));
thisProject = Projects.findOne({_id: id});
return Projects.findOne({_id: id});
} else {
return thisProject;
}
}