22

mongodb からの応答が得られないようです。私はmongooseの助けを借りてnode.jsとmongodbを使用しています。

私のnode.jsアプリでは

mongoose.connect('mongodb://localhost:27017/myDB');

var Schema = mongoose.Schema,
    ObjectId = Schema.ObjectId;

var BlogPost = new Schema({
    author  : ObjectId,
    title   : String,
    slug    : { type: String, lowercase: true, trim: true },
    content : String,
    summary : String,
    date    : Date
})

var BlogModel = mongoose.model('BlogPost', BlogPost);

BlogModel.find({}, function(docs){
   console.log(docs);
});

mongo シェルで show dbs と入力すると、

admin   (empty)
myDB       0.203125GB
local   (empty)
test    (empty)

db.blogmodel.find() の戻り値:

{ "_id" : ObjectId("50108d3df57b0e3375a20479"), "title" : "FirstPost" }

はい、私はmongodを実行しています。

固定解

var BlogModel = mongoose.model('blogmodel', BlogPost, 'blogmodel');

(モデル名、スキーマ名、コレクション名)

4

4 に答える 4

41

Mongoose はモデル名を複数形にするためfind、「blogpost」ではなく「blogposts」コレクションで実行されます。つまり、mongo シェルでのクエリは「blogmodel」コレクションにあります。その場合:

var BlogModel = mongoose.Model("BlogModel", ..)

または、コレクション名を 3 番目のパラメーターとして渡します。

var BlogModel = mongoose.model("BlogPost", schema, "blogmodel")
于 2012-07-26T03:56:15.907 に答える
6

BlogModel.findコールバックの最初のパラメーターは、、 err2番目のパラメーターはdocsです。したがって、コードは次のようになります。

BlogModel.find({}, function(err, docs){
   console.log(docs);
});
于 2012-07-26T03:10:53.217 に答える
0

昨日、同様のエラーが発生しました。私の場合、エラーはmongoにインポートされたデータが原因でした。mongoimport キーを使用した後、_id は ObjectId ではなく文字列として格納されました。mongoでデータをクエリしていたときはすべてうまくいきましたが、Mongooseで_idで何かを見つけようとすると、常にnullまたは空の配列が返されました。その情報が誰かの役に立つことを願っています。

于 2015-12-10T16:36:24.473 に答える