2016-07-30 14 views
0

外部サーバーのMongoDBに接続してユーザーを挿入するNodeスクリプトを作成しようとしています。私はlocalhostを使って数十のチュートリアルで見つけた基本的なものです。私が試したことが何であっても、それらのチュートリアルに従えば、私はTypeErrorを取得しているようです:undefinedは関数メッセージではありません。私はこれがMongoとNodeの両方に新しいことが原因であることを知っていますが、残念ながらこれを理解するのは簡単ではありません。なぜノードのmongooseは、未定義が関数ではないことを伝えていますか?

私が持っているコードには関係のないWebページはなく、この場合はバックエンド接続であると考えられます。コードは次のとおりです。

var User = require('/var/www/html/testing/folder1/User.js'); 
    var mongoose = require('mongoose'); 
    mongoose.Promise = global.Promise; 


    mongoose.connect('mongodb://root:(Server Admin Password)@(I.P address of the server)/(Database Name)'); 

    var newUser = User({ 
     _id: "KM529", 
     email: "[email protected]", 
     name: "John Smith", 
     password: "password", 
     photo: "a picture url" 
    }); 

    newUser.save(function(err){ 
     if(err){ 
     console.log(err); 
     throw err; 
     } 

     console.log('User save successfully'); 
    }); 

上記は実際に実行されているファイルです。必要な追加のファイルがある:私はすでに15+同様のstackoverflowの質問を見ていると、まだそれらのどれもが、私はこの問題を解決するために許可されていない

var mongoose = require('mongoose'); 
    var Schema = mongoose.Schema; 

    // Creates a schema to be used for all user documents 
    var userSchema = new Schema({ 
     _id: { type:String, required: true, unique: true }, 
     email: { type: String, required: true, unique: true }, 
     name: { type: String, required: true }, 
     password: { type: String, required: true} , 
     photo: String, 
    }); 

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

    module.exports = User; 

。誰かが私を正しい方向に向けることができれば、私は永遠に感謝しています。

編集:私は取得していますエラーは次のとおりです。

/var/www/html/testing/pokemon/node_modules/mongoose/lib/connection.js:282 
     var promise = new Promise.ES6(function(resolve, reject) { 
      ^
    TypeError: undefined is not a function 
at NativeConnection.Connection.open (/var/www/html/testing/pokemon/node_modules/mongoose/lib/connection.js:282:17) 
at Mongoose.connect (/var/www/html/testing/folder1/node_modules/mongoose/lib/index.js:241:47) 
at Object.<anonymous> (/var/www/html/testing/pokemon/test.js:8:10) 
at Module._compile (module.js:456:26) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Function.Module.runMain (module.js:497:10) 
at startup (node.js:119:16) 
at node.js:906:3 
+1

どのようなエラーが発生していますか? –

+0

のどこに問題があるのか​​分からずに何がうまくいかないのかは分かりにくいです。 – KM529

+0

どのバージョンのノードとマングースを使用していますか?なぜ 'mongoose.Promise'を' global.Promise'でオーバーライドするのですか?それが問題だろうか? – jmunsch

答えて

2

は、ノードのREPLを使用して、いくつかのデバッグをした:

> var m = require('mongoose') 
undefined 
> m.Promise 
{ [Function: Promise] ES6: [Function], SUCCESS: 'complete', FAILURE: 'err' } 
> m.Promise.ES6 
[Function] 
> global.Promise 
[Function: Promise] 
> global.Promise.ES6 
undefined 

global.Promise.ES6は、ノード6.2.2

を使用して存在しません。この行を削除:

mongoose.Promise = global.Promise; 
+0

を使用しています。これは、モジュールに基づいてエラーを変更するように見えます。これは、mpromiseライブラリが廃止され、それ以降は何もしません。テストしたコードで実際に挿入を実行できましたか? – KM529

関連する問題