Firebase部署 - 角度app +后端

时间:2017-09-24 19:20:17

标签: json node.js angular express firebase-hosting

我正在构建一个带有角度4的全栈应用程序。我正在使用express.js和Mongojs作为数据库。

一切正常,我决定部署到Firebase托管。

这是我在应用程序尝试发出http GET请求时在控制台中读取的错误

Unexpected token < in JSON at position 0 error - 我用Google搜索意外令牌&lt;在位置0的JSON中错误可能是,这可能是因为请求返回404.这非常难以调试。

客户端 我从服务中处理了所有Crud方法。我使用相对路径来获取/发布/放置和删除。虽然,我不确定这是否正确。因为,相对路径是指角度app而不是相对于服务器。 在开发模式下,我在端口1234上为节点server.js提供服务,在端口4200上为客户端提供服务,

import { Injectable } from '@angular/core';
import { Post } from '../shared/post'
//import { POSTS } from '../shared/mock-posts'
import {Http, Headers}  from '@angular/http';
import {Observable} from 'rxjs/Observable';

import 'rxjs/add/operator/map'

var headers = new Headers();//??
headers.append('Content-Type', 'application/json');

@Injectable()
export class PostService {

  constructor(private http:Http) {
    console.log('task service initialized')
  }

  getAllPosts():Observable<any>  {  
    //console.log('get posts')
    return this.http.get('/api/posts', {headers:headers})
      .map(res => JSON.parse(res.json()))
  }

  public deletePost(post: Post) {
    console.log('SERVICE - post ' + post._id  + ' successfully deleted')
    return this.http.delete('/api/post/' + post._id)
      .map(res => res.json)

  }

  public updatePost(post: Post, newText:string) {
    console.log('SERVICE - post ' + post._id  + ' successfully updated')
    let newPost = {"title": newText, "color": post.color}
    return this.http.put('/api/post/' + post._id, newPost, {headers:headers})
      .map(res => res.json)
  }

  public addPost(newPost: Post) {
    console.log('successfully added (service)' + newPost.title)
    let body = JSON.stringify({title: newPost.title, color:newPost.color});
    console.log(JSON.stringify(newPost))
    return this.http.post('/api/post', newPost,{headers:headers})
    .map(res => res.json());  
  }

}

服务器侧 使用express来处理所有路由。 我与我的数据库沟通,以读取和写入我的馆藏帖子

var express = require('express')
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('[hidden]', ['posts'])

//router.get('/') - to only read api

//get all posts
router.get('/posts', function(req, res, next) {
    db.posts.find(function(err, posts){
        if (err) {
            res.send('error message ' + err)
        }

        res.json(posts)
    })
})

//get 1 single post
router.get('/post/:id', function(req, res, next) {
    db.posts.findOne({_id: mongojs.ObjectId(req.params.id)}, function(err, post){
        if (err) {
            res.send('error message ' + err)
        }
        res.json(post)
    })
})

//save post
router.post('/post', function(req, res, next) {
    var post = req.body
    console.log(post)

    console.log('request body '+ post.title)
    if(!post.title) {
       res.status(404).send({
            "error": "bad request"
        })
    } else {
        db.posts.save(post, function(err, post, next) {
            if (err) {
                res.send('error message ' + err)       
            } 
            res.status(200)
        });
    }
})


//delete
router.delete('/post/:id', function(req, res, next) {
    let post = mongojs.ObjectId(req.params.id)
    db.posts.remove({_id: mongojs.ObjectId(req.params.id)}, function(err, post){
        res.status(200)
        return res.end()

        console.log('SERVER - post ' + req.body.title + ' successfully deleted')

        if (err) {
            res.send('error message ' + err)
        }    
    })
})

//update
router.put('/post/:id', function(req, res, next) {
    var post = req.body
    var updatedPost = {"title": post.title, "color": post.color}
    console.log(updatedPost)

    if(!updatedPost) {
        res.status(404).send({
            "error": "bad request"
        })

    } else {
        db.posts.update({_id: mongojs.ObjectId(req.params.id)}, updatedPost, {}, function(err, post){
            res.status(200)
            console.log('SERVER - post ' + updatedPost.title  + ' successfully updated')
            if (err) {
                res.send('error message ' + err)
            }
        })
    }

})
module.exports = router;

0 个答案:

没有答案