私のモデル/スキーマはこちらです。作成方法は動作しますが、 "すべての" 方法は...それはここで500 ...私のMongoose findAllメソッドが500エラーを返すのはなぜですか?
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var DiSchema = new mongoose.Schema({
name: { type: String, lowercase: true , required: true },
photo: { type: String },
email: { type: String, unique: true, lowercase: true },
year: { type: Number},
timestamp: { type : Date, default: Date.now },
description: { type: String},
location: { type: Array },
social: {
website: {type: String},
facebook: {type: String },
twitter: {type: String },
instagram: {type: String }
}
});
DiSchema.methods.create = function(o, cb){
this.model.save(o, cb);
};
DiSchema.methods.all = function(o, cb){
Di.find(o, cb);
};
module.exports = mongoose.model('Di', DiSchema);
は私のコントローラで返しません。
'use strict';
var Di = require('../models/di');
exports.create = function(req, res){
Di.create(req.body , function(err, di){
console.log('req.body.di', req.body);
res.send({di:di});
});
};
exports.index = function(req, res){
Di.all({}, function(err, dis){
res.send({dis:dis});
});
};
ルート:
var dis = require('../contollers/dis');
app.get('/dis', dis.index);
app.post('/dis', dis.create);
作成メソッドは正常に動作しますが、インデックス/すべてのメソッドを使用してgetエンドポイントに到達すると、私は500を取得し続けます。
私はコントローラ内で直接クエリを実行すると、動作します。
しかし、スキーマメソッドから呼び出そうとすると、それはできません。
私は間違った方法を使用していますか?私のJSはオフですか?
更新:
私はコントローラにこのコードを置けば、それは動作します:まだ
exports.index = function(req, res){
Di.find({}, function(err, dis) {
if (!err){
res.send(dis);
};
});
};
「の元の質問に興味を持っ方法から機能しない理由モデル "。
は私も無駄に、モデルでこのリファクタリングを試してみた:
DiSchema.methods.list = function(o, cb){
this.model.find(o, cb);
};
&
DiSchema.methods.list = function(o, cb){
this.model('Di').find(o, cb);
};
500エラーの原因となった例外は何ですか?そこからデバッグできるはずです。 – JohnnyHK
インスペクタツールでネットワークに何も表示されません。 500を示す唯一のものは、ターミナル内のモルガンです。これをさらにデバッグする方法を見ていきます。 console.logをDistiller.all関数(コントローラ内)に置くと、決してヒットしないので、関数が正しく呼び出されていないか、ハングアップしているようです... – NoobSter