我正在构建一个带有角度4的全栈应用程序。我正在使用express.js和Mongojs作为数据库。
一切正常,我决定部署到Firebase托管。
这是我在应用程序尝试发出http GET请求时在控制台中读取的错误
- 我用Google搜索意外令牌<在位置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;