2017-04-25 72 views
0

我有以下問題。在ExpresJs中寫入的我的服務器(使用MongoDB作爲數據庫)在註冊後(POST方法)重定向我的頁面。其實,我不知道爲什麼。你能幫我嗎?ExpresJS POST後重定向

Server.js

const express = require('express'); 
const bodyParser = require('body-parser'); 
const app  = express(); 
const morgan  = require('morgan'); 

app.use(morgan('dev')); 
app.use(bodyParser.urlencoded({ extended: true })); 
app.use(bodyParser.json()); 

const port = process.env.PORT || 9090; 

const mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/db'); 
const router = express.Router(); 

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
    next(); 
}); 

router.get('/', function(req, res) { 
    res.json({ 
    "get | post": "/users" 
    }); 
}); 

app.use('/api', router); 
require('./routes/users')(app,router); 

app.listen(port); 
console.log('Started server on port ' + port); 

users.js

const User = require('../models/user'); 

module.exports = function(app, router){ 
    app.post('/api/users',function(req, res) { 
     var user = new User(); 
     user.name = req.body.name; 
     user.surname = req.body.surname; 
     user.email = req.body.email; 
     user.age = req.body.age; 
     user.login = req.body.login; 
     user.password = req.body.password; 
     user.created_at = req.body.created_at; 
     user.update_at = req.body.update_at; 
     user.save(function(err) { 
      if (err) 
       res.send(err); 
      res.json({ 
       name: user.name, 
       surname: user.surname, 
       email: user.email, 
       age: user.age, 
       login: user.login, 
       password: user.password, 
       update_at: user.update_at, 
       created_at: user.created_at 
      }); 
     }); 
    }) 
    app.get('/api/users',function(req, res) { 
     User.find(function(err, users) { 
      if (err) 
       res.send(err); 

      res.json(users); 
     }); 
    }); 
} 

user.service.ts

import { Observable } from 'rxjs/Observable'; 
import { Http, RequestOptions, Headers } from '@angular/http'; 
import { Injectable } from '@angular/core'; 
import { db_url } from './../../../assets/db_url'; 
import { User } from './../../../assets/interfaces/db.interface'; 
import 'rxjs/add/operator/catch'; 
import 'rxjs/add/operator/map'; 
import 'rxjs/add/operator/toPromise'; 
@Injectable() 
export class UserService { 

    constructor(private _http: Http) {} 
    registerUser(user_data: User): Observable<any>{ 
     let headers = new Headers({ 'Content-Type': 'application/json' }); 
     let options = new RequestOptions({ headers: headers }); 
     let url = "http://localhost" + db_url + "/users"; 
     return this._http.post(url, user_data , options) 
         .map(data => data.json()) 
         .catch(err => err); 
    } 
} 

你的想法?我找不到解決辦法:/

回答

0

嘗試return運營商加入到同一個地方

app.get('/api/users',function(req, res) { 
    User.find(function(err, users) { 
     if (err) 
      return res.send(err); <<< 

     res.json(users);  
    }); 
}); 
+0

確定。山姆加 - 返回res.json(用戶)。對? – qwerty1234567

+0

沒有。 'res.send'後面的代碼被進一步執行並調用'res.json'。它看起來像一個錯誤,因爲你通過'res.send'和'res.json'發送了兩次答案。 –

+0

不起作用。像你一樣告訴我相同的地方增加了回報:/它重定向 – qwerty1234567