接收错误消息,其中显示“无法读取未定义的属性'indexOf'”。我在视图中获得旅程护照ID,但旅行护照ID没有到达该功能。另外,由于一些奇怪的原因,我没有得到我的console.logs。任何帮助都会很棒!
这是我的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';
}
});
此外,来自我的Journey模型的代码,其中来自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
}
});
答案 0 :(得分:0)
journeys_liked
未存储在req.user
中。如果它是undefined
,那就意味着无论你是什么,都要调用.indexOf()
方法。在这种情况下,journeys_liked
。我会说首先验证数据库中应该有该属性的值。如果应该有一个问题,Passport没有将值存储在req.user
中。
如果数据库中没有值,我认为您也应该对值进行条件检查。这样,只有在if (req.user.journeys_liked && req.user.journeys_liked.indexOf()
之类的值时才会运行。