2016-05-05 13 views
0

エクスプレスとモンゴースを使用してREST APIを作成しようとしています。以下はユーザーモデルのコードです(user.server.model.js)。Mongooseでモデルを使用して文書を作成できません

const mongoose = require('mongoose'); 

var userSchema = new mongoose.Schema({ 
    name: { 
     first: { type: String, required: true }, 
     last: { type: String, required: true } 
    }, 
    loginId: { type: String, required: true, unique: true }, 
    password: { type: String, required: true }, 
    location: String, 
    meta: { age: Number, website: String }, 
    isActive: Boolean, 
    createdOn: { type: Date, default: Date.now }, 
    updatedOn: Date 
}); 

var User = mongoose.model('User', userSchema); 

exports.User = User; 

私は急行ルートのこのUserモデルを使用しようとしているとして、以下の(routes.js):

const express = require('express'), 
    User = require('../models/user.server.model'), 
    router = express.Router(); 

router.route('/users') 
    .post((req, res) => { 
     let user = new User({ 
      name: req.body.name, 
      loginId: req.body.loginId, 
      password: req.body.password, 
      location: req.body.location, 
      meta: req.body.meta, 
      createdOn: req.body.createdOn, 
      updatedOn: req.body.updatedOn 
     }); 

     user.save((err) => { 
      if (err) { 
       res.send(err); 
      } 
      else{ 
       res.json({ message: 'User created' }); 
      } 
     }); 
    }); 

module.exports = router; 

しかし、私はクロームIでポストマン拡張子を使用して、このAPIをテストしようとすると、 「

TypeError: User is not a constructor

ノードバージョンエラーの下になってメートル:6.0

誰でもここで間違っていることを助言してもらえますか?

+1

をあなたは 'ユーザとして直接' require'値を使用しています'ので、' exports.User'をuser.server.model.jsの 'module.exports'に変更する必要があります。試してみてください。 – JohnnyHK

+0

@JohnnyHKさん、ありがとうございました:)答えとしてマークすることができるように、回答セクションにあなたのコメントを投稿してください。 – Dinu

+0

@JohnnyHK exports.Userがここで動作しない理由を知っているかもしれませんか? – Dinu

答えて

1

あなたはUserとして直接require値を使用しているので、あなたはuser.server.model.jsにmodule.exportsexports.Userを変更する必要があります。

module.exports = User; 
関連する問題