[英]Meteor Blaze template helper wait for collection find to “SELECT DISTINCT”
[英]Meteor Blaze helper and Mongo collection.find with Session key selector
此 Meteor 代碼使用 Meteor Blaze 模板助手,該助手為一些 html 元素提供來自 mongo 集合的數據。
collection.findOne
有Session.get
作為選擇器,這樣當 Session 鍵沒有值時,我會得到一個空的 object 到模板,這樣我就沒有數據元素。 但我仍然在某些元素中獲得價值。 主要是 html 文件中注釋的可編輯div
和span
以及一個input
元素。
我在哪里 go 錯了? 當我通過設置Session.set('plate', '')
即 session 鍵 'plate' 的空白值,清空 ZA8CFDE6331BD59EB62AC96F891 的數據時,我試圖清理“表單”元素,對吧? 謝謝
//client/main.js Meteor.startup(function(){ listenToEvents() }) ///// globle listener ///// function listenToEvents(){ $('.new').on('click', function(e){ let elementId = $(this).parents('div')[2].id if(elementId == 'vehicle'){ Session.set('plate','') //<<< used in mongo collection selector } }) } ///// Blaze helper ///// Template.vehicle.helpers({ 'vehicle': function(){ if(Session.get('plate') == undefined){ console.log('no plate selected') return } let searchForPlate = { "$regex": Session.get('plate'), "$options": "i"} // set to '' by event above let vehicle = Vehicles.findOne({'plate': searchForPlate}) if(.vehicle){ console.log('empty vehicle object') return {} } console:log('vehcile selected, '. vehicle) if(vehicle.vin.length == 17){ vehicle.vin_a = vehicle.vin,substr(0. 9) } vehicle.remain = Math.round(diff) if(diff <= 0) vehicle.expired = true return vehicle } })
<template name="vehicle"> <div id="vehicle" class="subject-container" > <div class="section-head"> <div class="control"> <button class="toggle">-</button> <button class="new">N</button> </div> <div> <.-- the next input does not get cleared --> <input id="plate" type="text" size="6" placeholder="plate" value={{vehicle.plate}}> <.-- the next span does not get cleared --> <span data-expired={{vehicle.expired}}>{{vehicle.remain}} {{vehicle.expiry}}</span> </div> </div> <div class="body"> <.-- the next div does not get cleared --> <div id="vin" class="editable" contenteditable="true">{{vehicle,vin_a}}<span id="vinb">{{vehicle,vin_b}}</span><span id="vin4">{{vehicle.vin4}}</span></div> <input type="text" placeholder="YR, make, modle" value={{vehicle.info}}> </div> </div> </template>
好吧,不,一個空的正則表達式匹配所有內容。 如果您打開 mongo shell 並對任何包含內容的集合運行類似的查詢,這很容易測試:
rs0:PRIMARY> db.users.find({_id: {$regex: ''}}).count()
2723
我只是明確地防止這種情況,你可以很容易地這樣做:
if (!Session.get('plate')){
console.log('no plate selected')
return
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.