2016-07-27 6 views
0

長く曖昧なタイトルには申し訳ありません。Node.js PostgresQLのExpress、後継のエラー

httpリクエストでデータベースに新しいユーザーを追加しようとしています。モデルファイルでテーブルを作成するのに問題はありませんが、何らかの理由で新しいユーザーを追加できません。だからここ

は、私が取得していますエラーです:

export default function createUserModel (sequelize, DataTypes) { 
const user = sequelize.define('user',{ 
    email: { 
     type: DataTypes.STRING, 
     allowNull: false, 
     unique: true 
    }, 
    username:{ 
     type: DataTypes.STRING, 
     allowNull: false, 
     unique: true 
    }, 
    password: { 
     type: DataTypes.STRING, 
     allowNull: false 
    } 
},{ 
    classMethods: { 
     associate (models){ 
      user.belongsToMany(models.conversation, {through:'UserConversations'}); 
     } 
    } 
}); 

return user; 
} 

コントローラ(user_controller.js):

var express = require('express'); 
var db  = require('sequelize-connect'); 

var router = express.Router(); 

router.get('/', function (req, res, next) { 
    res.send('Hello World'); 
}); 

// Create new user 
router.post('/', function (req, res, next) { 

    try{ 
     const createdUser = db.models.user.create({ 
      email: req.body.email, 
      username: req.body.username, 
      password: req.body.password 
     }); 

     res.status(200).json(createdUser.dataValues); 

    }catch(err){ 
     console.log(err); 
     next(err); 
    } 

}); 

module.exports = router; 

マイカール要求ここ

Executing (default): SELECT 1+1 AS result 
Connection to database successfull 
TypeError: Cannot read property 'user' of undefined 

は私のモデルファイルuser.jsです:

curl -v -H "Content-type: application/json" -X POST http://localhost:3000/api/users/ -d '{"email":"[email protected]", "username":"test","password":"123456"}' 

答えて

0

あなたのモデルを後継にインポートしましたか? 。 userのオブジェクトがありませんdb.models

+0

申し訳ありません申し訳ありませんノードには初めてです。後継のモデルをインポートすることはどういう意味ですか?私は自分のポストグル管理者で作成されたテーブルを見ることができますか? –

+0

@Faellor doc [http://docs.sequelizejs.com/en/latest/docs/models-definition/#import](http://docs.sequelizejs.com/en/latest/docs/models-definition)を読んでください。 /#import) – Calvinxiao

+0

ありがとう、それは今動作します! –

1

const user = ...の代わりにreturn sequelize.define...を使用してください。

user変数は未定義です。この場合、変数割り当てが完了する前にreturn userが実行されるためです。

ノードjsの非同期の詳細を参照してください。