2016-10-13 3 views
1

、私はなぜMongooseは私にJSON属性へのアクセスを許可していませんか?私のルートファイルで

router.get('/users/:user', function(req, res) { 
    mongoose.model('users').find({name: req.params.user}, function(err, user) { 
    res.send(user.name || 'User.name is not defined'); 
    }); 
}); 

を持っていると私はちょうどres.send(user)をすれば、私のスキーマが、私のルートファイルで

var userDataSchema = new Schema({ 
    name: String 
}, {collection: 'users'}); 

mongoose.model('users', userDataSchema); 

として定義され、それはすべてのバック私に適切なJSONを与えますその名前のユーザーの私の問題は、私はJSONから特定の名前にアクセスすることができないということです。

私はJSON.stringify(user)を実行してからその変数にJSON.parse()を実行しようとしましたが、user.nameにはまだアクセスできません。私は今もuser.toJSON()を試してみましたが、これはエラーが発生しても、

EDIT「は定義されていませんUser.name」で応答しない:ここではJSONです:私が行くときに

[ 
    { 
    _id: "57feb97017910fa7e0e194d8", 
    name: "Garrett" 
    }, 
    { 
    _id: "57feb97817910fa7e0e194d9", 
    name: "Steve" 
    }, 
    { 
    _id: "57feb97c17910fa7e0e194da", 
    name: "Joe" 
    } 
]  

/ユーザー/ Steveとconsole.log(user)の場合、そのユーザーの正しいJSONがログに記録されます。

+0

です。応答を送信する前に、サーバーconsole.log(user.name)にあります。ロギングとは何ですか? – user2263572

+0

これは未定義のログです –

+0

メソッド[toJSON](http://mongoosejs.com/docs/api.html#document_Document-toJSON) – tmquang6805

答えて

1

使用.findOneまたはユーザーオブジェクトは配列

+0

これはうまくいきました。それは奇妙ですが、ユーザーオブジェクトは配列です。私は 'typeof user'を実行したときに' object'を返しました –

+0

配列の数を知ることができないので配列を返しますか?したがって、それに基づいて、あなたが具体的に.find()。limit(1)と言うなら、それはただ一つの名前があることを知っているでしょう。 –

+0

配列はjavascriptのオブジェクトです。Array.isArray(user) – YOU

関連する問題