2016-08-25 75 views
0

接收到錯誤信息」讀取屬性'indexOf'未定義「。我在視圖中獲取旅程護照ID,但護照ID並未進入該功能。另外我沒有得到我的console.logs的一些奇怪的原因。任何幫助都會非常棒!錯誤信息msg「無法讀取未定義的屬性'indexOf'

這裏是我的HTML它呼籲 'userLikes' 過濾器:
(全碼處:https://github.com/cdtdesign/TCP-Express/blob/master/views/blog.html

<a class="like-button" title="Like"> 
        <i class="fa fa-heart {{journey.passport_id | userLikes}}"></i> 
       </a> 
       {% if user.passport_id == journey.passport_id %} 
       <a href="#modal-text/{{ String(journey._id) }}#update" title="Edit"> 
        <i class="fa fa-pencil journeyEditButton"></i> 
       </a> 
       <a title="Delete"> 
        <i class="fa fa-close journeyDeleteButton" style="font-size:2.875rem;" data-journey-id="{{ String(journey._id) }}"></i> 
       </a> 
       {% endif %} 

這裏的JS導致了問題:
(滿碼:https://github.com/cdtdesign/TCP-Express/blob/master/routes/blog.js

if (req.user) { 
    swig.setFilter('userLikes', function(journeyPassportID) { 
     if (req.user.journeys_liked.indexOf(journeyPassportID) != -1) { 
     return 'liked'; 
     } 
    }); 

另外,從我的旅程模型的代碼,其中passport_id來源:

var journeySchema = new Schema({ 
    uuid: { 
     type: String, 
     default: uuid.v4() 
    }, 
    travel_token: { 
     type: String, 
     default: randomstring.generate() 
    }, 
    passport_id: String, 
    traveler_name: String, 
    title: String, 
    date: Date, 
    body: String, 
    description_filename: String, 
    header_image_filename: String, 
    users_who_like: Array, 
    tags: String, 
    shortlink: String, 
    deleted_at: String, 
    created_at: { 
     type: Date, 
     default: Date.now 
    }, 
    updated_at: { 
     type: Date, 
     default: Date.now 
    } 
}); 
+2

請給我們完整的代碼。 –

+2

'req.user.journeys_liked'未定義。因此錯誤信息。你的問題中沒有足夠的上下文讓任何人都能猜出爲什麼會這樣。 –

+0

@Jits我在視圖中添加了更多的上下文和代碼,其中過濾器在旅程護照ID上被調用。請讓我知道,如果這是足夠的信息/代碼來幫助解決我的問題。對不起,我是一個完整的小白菜!除了沒有提供足夠的信息,我可能不會提出正確的問題。我很抱歉。感謝任何有見識的人! – Chris

回答

0

journeys_liked心不是存儲在req.user。如果是undefined這意味着無論您打電話給.indexOf()方法,都不會有任何價值。在這種情況下,這將是journeys_liked。我會首先確認數據庫中應該有該屬性的值。如果應該有一個,那麼護照不存儲req.user中的值是個問題。

如果數據庫中沒有任何價值,我認爲你應該只對一個值進行條件檢查。這樣,只有在有像if (req.user.journeys_liked && req.user.journeys_liked.indexOf()這樣的值時纔會運行。

+0

謝謝@Arcrammer。我發現,旅行者喜歡的是旅行者模型,而不是旅程模型,但是關鍵的價值是將它傳遞給數據庫。我想如果鍵和類型輸入到模型中,它應該在數據庫中。沒有?它還會如何進入數據庫? – Chris

+0

你肯定希望它在'Traveler'模型中,因爲這是'req.user'創建的集合。我想你可以在用戶提交表單或任何你選擇接近的方式(它不必通過表單)時以編程方式將其放置在數據庫中。我想如果你只是在旅行者集合中加入一些虛擬記錄,那麼它就不應該是'未定義'了。 – IIllIIll

相關問題