0

マングースの find メソッドの結果からデータを取得したい。

SinceIdLog.find({},['since_id','saved_date'],{sort:{'saved_date': -1}, limit:1}, function(err, docs) {
    console.log(docs[0]);
    // some processes
});

この場合の「console.log」の出力は、次のようにしたいものです。

{ since_id: '214320642386968576',
  saved_date: Sun, 17 Jun 2012 13:16:04 GMT,
  _id: 4fddd8941390b38712000143 }

しかし、以下のように書くと

SinceIdLog.find({},['since_id','saved_date'],{sort:{'saved_date': -1}, limit:1}, function(err, docs) {
    console.log(docs[0].since_id);
    // some processes
});

出力は「未定義」です。

なぜなのかご存知ですか?

Twitter API のパラメータの「since_id」を MongoDB に保存します。

このコードでは、OAuth を使用して新しく更新されたツイートを取得するための since_id を取得します。

よろしく、

4

4 に答える 4

0

たぶん、since_id何も返さないフィールドのゲッター関数がありますか? スキーマを確認してください。

于 2012-06-18T15:59:56.960 に答える
0

私はかつて同じ問題を抱えていましたが、結果の解析が役に立ったと思います。

以下を試してください

SinceIdLog.find({},['since_id','saved_date'],{sort:{'saved_date': -1}, limit:1}, function(err, docs) {
    docs = JSON.parse(docs);
    console.log(docs[0].since_id);
    // some processes
});
于 2012-06-18T16:05:08.900 に答える
0

ステートメント内の不要な]afterを削除します。since_idconsole.log

于 2012-06-18T13:27:05.450 に答える
0

みんなありがとう、

原因がわかりました。

次のようにスキーマを正しく定義していません

var Schema = mongoose.Schema,
SinceIdLog = mongoose.model('SinceIdLog', new Schema());

これは、データを保存するときに機能します。

var XXX = new SinceIdLog(Object);
XXX.save(function(err) {});

しかし、見つけるのはうまくいかないようです。

修正したところ、正しく動作するようになりました。

var Schema = mongoose.Schema,
SinceIdLog = new Schema({
    since_id: String,
    saved_date: Date
}),
SinceIdSchema = mongoose.model('SinceIdLog', SinceIdLog);

ありがとう!!

于 2012-06-19T13:52:22.120 に答える