1

我有以下结构:

{
    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});
}

现在我可以看到这个方法正在被调用,但由于某种原因它被调用了两次。首先是正确的数据,然后是未定义的,所以我仍然没有得到显示任何内容的字段,但如果我能找到它被调用两次的原因,我将解决第一级表单(无服务等)

4

1 回答 1

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;
    }
}
于 2017-09-28T12:19:56.273 回答