2017-05-28 10 views
0

こんにちは:私は足を平均スタックに濡らしています。だから私はAngularを使用して私のmongodbデータベースに接続するapi.jsファイルに接続しています。しかし、私は次のエラーを取得しています:以下のようにエラーで参照されている解決方法:位置0のJSONで予期しないトークン<

ERROR SyntaxError: Unexpected token < in JSON at position 0 
    at JSON.parse (<anonymous>) 
    at Response.Body.json (http.es5.js:800) 
    at MapSubscriber.project (post.service.ts:19) 
    at MapSubscriber._next (map.js:77) 
    at MapSubscriber.Subscriber.next (Subscriber.js:89) 
    at XMLHttpRequest.onLoad (http.es5.js:1229) 
    at ZoneDelegate.invokeTask (zone.js:424) 
    at Object.onInvokeTask (core.es5.js:4140) 
    at ZoneDelegate.invokeTask (zone.js:423) 
    at Zone.runTask (zone.js:191) 

post.service.tsファイルは次のとおりです。

import { Injectable } from '@angular/core'; 
import { Http } from '@angular/http'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class PostService { 

    result: any; 

    constructor(private _http: Http) { } 

    getPosts() { 
    return this._http.get("/api/posts") 
     .map(result => this.result = result.json()); 
    } 

    getPost(id) { 
    return this._http.get("/api/details" + id) 
     .map(result => this.result = result.json()); 
    } 

} 

次は私のapi.jsファイルです。コンソールでさえ、投稿を記録しません。

router.get('/details/:id', function(req, res) { 
    console.log('Requesting post'); 
    post.findById(req.params.id) 
     .exec(function(err, post) { 
      if (err) { 
       console.log('Error getting the post'); 
      } else { 
       res.json(post); 
       console.log(post); 
      } 
     }); 
}); 

私はここで間違っています。私はどんな指導にも感謝します。

+0

?クロムコンソールの – Aravind

+0

しかし、私はすべての投稿を引っ張ってみると、そのエラーは表示されません。単一の投稿をリクエストしようとするときだけ – Nosail

+0

JSONを返すと予想されるものは、実際にはHTMLを返すので、最初の文字として '<'が返されます。これはおそらく、4xxまたはおそらく5xxのいずれかの、APIをホストしているサーバーの標準エラーページです。したがって、サーバー上のコードは失敗する可能性が高く、間違ったルートになる可能性があります。あなたは、ブラウザのdevツールのネットワークタブをチェックすることで何が返ってくるかを見ることができます。または、 '.map()の前に' .do(response => console.log(response.text())) 'を追加してください。 –

答えて

1

あなたのapiにはいくつかの部分がありません。not foundポストまたはserver errorにリクエストを送信したとしたら、何も返さないか、エラーhtmlをクライアントに返します。そのようなクライアントにメッセージを送信しよう:

if (err) { 
    console.log('Error getting the post'); 
    res.status(500).json({error: err.message, errorCode: /*some number code*/ 1101}); 
} else { 
     /* logic for not found maybe */ 
     // and logic for result 
     res.json(post); 
     console.log(post); 
} 

とURLは次のようになります。あなたはそのエラーを取得しているget("/api/details/" + id)

+0

はい..ありがとう私はURLを修正した..それはどこが間違っていたのですか – Nosail

+0

上記の私の例としてあなたのAPIを更新することができます、それは将来の問題を防ぐことができます –

関連する問題