我正在开发一个项目,需要从url获取参数并将其插入mongodb.I我正在使用下面的代码,这是有效但仍然有些愚蠢的问题导致问题。 下面是main.js代码:
import { Template } from 'meteor/templating';
import { Dbs } from '../lib/collects.js';
import './main.html';
Router.route('/temp1/:ppid', function () {
this.render('temp1', {
data: function ()
{
var rpms = this.params.query.rpms;
return Dbs.findOne({patient_id:this.params.ppid});
}
});
});
Template.temp1.helpers({
'tempr': function() {
var p=Router.current().params.ppid;
var path1=Router.current().params.query.path;
var doc_id1 =Router.current().params.query.docid;
var temp1 = Router.current().params.query.temp;
var age1 = Router.current().params.query.age;
var gender1= Router.current().params.query.gender;
var height1= Router.current().params.query.height;
var weight1= Router.current().params.query.weight;
var tempr= Router.current().params.query.tempr;
Meteor.call('dbs.update',p,doc_id1,path1,temp1,age1,gender1,height1,weight1,tempr);
}
});
Below is main.html code:
<head>
<title>project1</title>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<nav class="#c5cae9 indigo lighten-4">
<div class="container">
<div class="nav-wrapper">
<a href="#" class="brand-logo">A3RMT</a>
<ul id="nav-mobile" class="right hide-on-med-and-down">
</ul>
</div>
</div>
</nav>
<div class="row">
<div class="col s2">
</div>
</div>
</body>
<template name="a3">
<div class="row">
<div class="col s2">
<h4 class="black-text text-darken-4">INFORMATION</h4>
<table class="centered">
<form class="sub">
<tr>
<td><th>Doc_ID</th>{{doc_id}}</td>
<td><th>tempr</th>{{tempr}}</td>
<td><th>temp</th>{{temp}}</td>
</tr>
<tr>
<td><th>Path</th>{{path}}</td>
<td><th>age</th>{{age}}</td>
<td><th>gender</th>{{gendert}}</td>
<td><th>weight</th>{{weight}}</td>
<td><th>Height</th>{{height}}</td>
</tr>
</form></table></div></div>
</template>
上面的代码工作正常,但唯一的问题是代码行:&#34;&#39; tempr&#39 ;: function()&#34;。当我从url插入新参数时,其值存储在数据库中,甚至在我更新时更新,但它不显示&#34; tempr&#34;从database.And如果我改变&#39;:function()到&#39; abc&#39;:function()我无法更新或插入任何数据库。我不明白我想用什么
Template.temp1.helpers({
'tempr': function() {
请有人帮我解决这个问题。我如何使用模板助手 我需要在&#34; tempr&#34;的地方指定什么?在 Template.temp1.helpers({&#39; tempr&#39 ;: function()
答案 0 :(得分:1)
帮助程序用于处理数据并动态地将其提供给html。页面加载时模板会多次运行。在您的情况下,当页面加载时,dbs.update将被反复调用多次。理想情况下,任何方法调用都应该出现在事件中。例如。提交表单时,请更新数据库。如果您希望每次加载页面时都进行更新,请将其放入onRendered()方法中。
可能的解决方案:
Templates.<<template_name>>.events({
// on submit of a form or something similar
var p=Router.current().params.ppid;
var path1=Router.current().params.query.path;
var doc_id1 =Router.current().params.query.docid;
var temp1 = Router.current().params.query.temp;
var age1 = Router.current().params.query.age;
var gender1= Router.current().params.query.gender;
var height1= Router.current().params.query.height;
var weight1= Router.current().params.query.weight;
var tempr= Router.current().params.query.tempr;
Meteor.call('dbs.update',p,doc_id1,path1,temp1,age1,gender1,height1,weight1,tempr);
})