2016-09-08 20 views
1

Mongoose。saveメソッドに問題があります。データベースは決して作成されず、データは保存されず、エラーは発生しません。私は幸運と同様の提案を見て、Googleとstackoverflowを使い果たしたので、私を助けることができる誰にもそれを開いて投げる!Mongoose .save()はデータベースに保存しませんか?

私のPOSTリクエストがで作られている:

export function registerUser({ email }) { 
    return function(dispatch) { 
    axios.post(`${API_URL}/auth/register`, { email }) 
    .then(response => { 
     dispatch({ type: AUTH_USER }); 
    }) 
    .catch((error) => { 
     errorHandler(dispatch, error.response, AUTH_ERROR) 
    }); 
    } 
} 

私はいくつかのPOSTリクエストを行い、すべてのサーバの設定に戻ってAPIから成功のステータスを取得する:{'database': 'mongodb://localhost/practicedb', 'port': process.env.PORT || 3000}、まだデータが保存されていないとデータベース(practicedb)を取得しませんターミナルに表示されません。

マングーススキーマを持つ

(user.jsの):

var UserSchema = new Schema({ 
    email: { 
    type: String, 
    lowercase: true, 
    unique: true, 
    required: true 
    }, 
}) 

APIコントローラ電子メールの文字列のPOSTリクエストを受信した後、何もテキストフィールドに入力されていない場合

、それは422エラーを返信し、User.findOneの内部に電子メールがすでにデータベースに存在する場合は422エラーをスローし、そうでない場合はuser.saveをデータベースに保存します。しかし.saveはエラーなしで動作せず、データベースも作成されません。

"use strict"; 

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

exports.register = function(req, res, next) { 
    const email = req.body.email; 

    if(!email) { 
    return res.status(422).send({ error: 'You must enter an email address.'}) 
    } 

    User.findOne({ email: email }, function(err, existingUser) { 
    if(err) { return next(err); } 

    if(existingUser) { 
     return res.status(422).send({ error: 'That email address is already in use.'}) 
    } 
    let user = new User({ 
     email: email, 
    }) 
    user.save(function(err, user) { 
     if(err) { return next(err); } 
     res.status(201).json({ 
     user: user, 
     }) 
    }) 
    }) 
} 

私はAPIコントローラのためのより広範なコンソールロギングを試してみましたが、一度トリガ、それは何も実行しないように見えるし、両端にスキップしますが、それはバックアップ取り上げて行く

EDIT User.findOneとuser.saveの両方の内部にありますが、user.saveは動作していないようです。

サーバーがデータベースに正しく接続されていない可能性がありますか? MongoDBメソッドが使用されているかどうかを判断する方法はありますか?

は、同様に急行ロギングをしようとしました:

enter image description here

そして、ここでは、サーバの設定方法です。

const express = require('express'), 
     app = express(), 
     logger = require('morgan'), 
     config = require('./config/main'), 
     mongoose = require('mongoose'), 
     bodyParser = require('body-parser'), 
     router = require('./router'); 

mongoose.Promise = global.Promise; 
mongoose.connect(config.database); 

const server = app.listen(config.port); 
console.log('Your server is running on port ' + config.port + '.'); 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(logger('dev')); 

app.use(function(req, res, next) { 
    res.header("Access-Control-Allow-Origin", "http://localhost:8080"); 
    res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS'); 
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization, Access-Control-Allow-Credentials"); 
    res.header("Access-Control-Allow-Credentials", "true"); 
    next(); 
}) 

router(app); 

EDIT 2

enter image description here

+0

あなたのuser.jsのが完了しているのですか?あなたがmongooseスキーマを宣言し、モデルを返すとき? –

+0

@LucasCosta申し訳ありませんが、完了したことを明確にすることができますか? –

+0

@LucasCosta申し訳ありませんが、誰があなたたちを '彼ら'と呼んでいますか? –

答えて

0

私はデータベース内の正しい場所を見ていないので、同様の問題があり、項目が表示されませんでした。 mongodbデータベースに接続してもよろしいですか? Mongooseは時々操作バッファリングを行います。これは、あなたが接続されていることを確認してみてください:操作のバッファリングについて

var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    // we're connected! 
}); 

// from mongoose docs. 

詳細:http://mongoosejs.com/docs/connections.html

関連する問題