错误消息“无法读取未定义的属性'indexOf'

时间:2016-08-25 04:05:22

标签: javascript arrays if-statement

接收错误消息,其中显示“无法读取未定义的属性'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
    }
});

1 个答案:

答案 0 :(得分:0)

journeys_liked未存储在req.user中。如果它是undefined,那就意味着无论你是什么,都要调用.indexOf()方法。在这种情况下,journeys_liked。我会说首先验证数据库中应该有该属性的值。如果应该有一个问题,Passport没有将值存储在req.user中。

如果数据库中没有值,我认为您也应该对值进行条件检查。这样,只有在if (req.user.journeys_liked && req.user.journeys_liked.indexOf()之类的值时才会运行。