簡體   English   中英

Meteor Blaze 助手和 Mongo 集合。使用 Session 鍵選擇器查找

[英]Meteor Blaze helper and Mongo collection.find with Session key selector

此 Meteor 代碼使用 Meteor Blaze 模板助手,該助手為一些 html 元素提供來自 mongo 集合的數據。

collection.findOneSession.get作為選擇器,這樣當 Session 鍵沒有值時,我會得到一個空的 object 到模板,這樣我就沒有數據元素。 但我仍然在某些元素中獲得價值。 主要是 html 文件中注釋的可編輯divspan以及一個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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM