2016-05-24 9 views
0

私はいつもnodejs一緒に速達で使用されるが、今私は(ちょうど「ノードmyscript.js」端末に呼び出すことによって)nodejsで次のスクリプトを実行しよう私は、コールバック関数で取得することはありませんが、ちょうど

を停止nodejs

postModelはmongooseモデルで、mongodbのクエリを実行します。

'use strict' 
var postModel = require(__dirname + '/../model/post').postModel; 
myfunction(); 
function myfunction() { 
    console.log("before call"); 
    postModel 
     .find({isArchived: false}) 
     .exec(function(err,result){ 
      console.log("result is ok") 
     }) 
}; 

私が理解できないことは、なぜ私の端末で「結果は大丈夫」とは決して見えないのかということです。

私はasyncとwait.forライブラリでこれを試しましたが、そこにも私のスクリプトは非同期関数が実行され、結果が返される前に停止します。

私はちょうど私がやっているものに何かを逃すと思いますが、あなたが実際にデータベースに接続するmongoose.connect()を呼び出す必要が全く分からないものを...

+1

おそらくモデルに問題があり、結果を取得する前にクラッシュしています。 – krakig

+0

答えに感謝します.Expressのエンドポイントに接続してこのコードを使用しても、コードは正常に実行されます。 –

+0

こんにちは、まあまあだった...それは確かに私は単に私のデータベースに接続されていないという問題だった... –

答えて

1

これ以外の場合、Mongooseはクエリを内部的にキューに入れ、クエリを発行する前に接続を待機します。しかし、その接続は決して来ないので(mongoose.connect()が呼び出されなかったため)、キューは決して処理されず、クエリは決して発行されないので、そのコールバックは決して呼び出されません。

+0

それは...愚かな私:)とありがとう –

+0

私が理解していないことはそれですエラーをスローしません... –

+0

@AndriesHeylen説明のために私の編集を参照してください。 – robertklep

関連する問題