2016-08-25 2 views
0

"未定義のプロパティ 'indexOf'を読み取ることができません"というエラーメッセージが表示されます。私はビューで旅パスポートIDを取得していますが、旅パスポートIDは機能に到達していません。また、私はいくつかの奇妙な理由で私のconsole.logsを取得していません。どんな助けがあれほど素晴らしいだろう!エラーmsg "未定義のプロパティ 'indexOf'を読み取ることができません"

はここにuserLikes "フィルタを呼び出し、私のHTMLれる:
は(の全コード: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が発信する私の旅のモデルからコード:req.userに格納されている

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でフィルタが呼び出されます。問題が解決するのに十分な情報/コードであれば教えてください。申し訳ありません、私は完全なnoobです!十分な情報を提供しないことに加えて、私は正しい質問をしていない可能性が高いです。謝罪いたします。任意の洞察力の人に感謝! – Chris

答えて

0

journeys_likedありえません。それがundefinedの場合、それはあなたが.indexOf()メソッドを呼び出していることは何でも価値がないことを意味します。この場合はjourneys_likedとなります。最初に、そのプロパティの値がデータベースにあるはずであることを確認します。 1つの場合は、Passportで値がreq.userに保存されていないと問題が発生します。

データベースに値がない場合は、値の条件付きチェックも行う必要があると思います。そうすれば、if (req.user.journeys_liked && req.user.journeys_liked.indexOf()のような値がある場合にのみ実行されます。

+0

ありがとう@Arcrammer。 journeys_likedはJourneysモデルではなくTravelersモデルに入っていますが、キーや値によってデータベースに反映されています。キーとタイプがモデルに入力されていれば、それはDBになければならないと思いました。いいえ?どのようにDBに入るのですか? – Chris

+0

あなたは 'req.user'が作成されているコレクションなので、' Traveler'モデルでそれを間違いなく望みます。私は、ユーザーがフォームを送信したとき、またはそれに近づく方法を選択したとき(フォームを介している必要はありません)、プログラムでデータベースに配置すると思います。 '' '' ''トラベラーズコレクションのいくつかのダミーレコードをデータで埋めて、それがもう ''未定義であるべきではないと思っています。 – IIllIIll

関連する問題