2016-08-25 77 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

相关问题