0

私は本当にこれで助けが必要です。私はmongodbとmongooseでnode.jsを使用しています。これまでのところ、スキーマを作成してデータベースに保存することができました。

var Bericht = new Schema({
    name     : String
  , mail     : String
  , betreff  : String
  , inhalt   : String
  , datum    : Date
});
var Bericht = mongoose.model('Bericht', Bericht);

私は、その他で送信できるhtmlフォーミュラーを持っています。フィールドデータ、クエリ文字列によって、それらを読み取り可能な文字列に変換します

var bericht_data = { 
name: tempo.Name
, mail: tempo.Mail
, betreff: tempo.Betreff
, inhalt: tempo.Inhalt
};
var testoro = new Bericht(bericht_data);
testoro.save(function (err) {
  if (!err) console.log('Success!');
}); 

たとえば、 tempo.Name は文字列であり、保存にも成功しています。これまでのところ、このフォーミュラからすべてのデータを mongodb に保存できます。

今まさに問題です。データを文字列として戻し、動的なhtmlを処理したいのです。コンソールに情報を取得するには、次を使用します

Bericht.find(
{},
{ '_id': 0},
        function(err, docs) {
        if (!err){ 
               console.log(docs);
          // process.exit();
                  }
        else { throw err;}
        }
);

コンソールには、長い _id のものを除いて、スキーマ Bericht に保存されたすべてのデータが表示されます。サンプル出力: [ { name: 'Hans', mail: 'hans@wurst.de', betreff: 'I Lost my wurst', inhalt: 'look at me, I am awesome' } ]膨大なデータになります。アイデアは、名前だけを "Hans" のような文字列に抽出することです。この名前を var に入れたいのですが、無理そうです! 私はもう試した

Bericht.find(
{},
{ '_id': 0},
        function(err, docs) {
        if (!err){ 
               console.log(docs.name);
          // process.exit();
                  }
        else { throw err;}
        }
);

しかし、「未定義」のみが配信されます。私はあなたの助けに感謝します!

4

2 に答える 2

0

Mongoose find はドキュメントの配列を返すため、次のことを試してください。

Bericht.find(
 {},
 { '_id': 0},
    function(err, docs) {
     if (!err){
        for(var i=0; i<docs.length; i++)
        {
           console.log(docs[i].name);
        }
      // process.exit();
     }
    else { throw err;}
    }
);
于 2013-02-16T19:24:22.730 に答える
0

Mongoose QueryStreamsを見てください。私はそれを自分で使用したことはありませんが、実際にどのように機能するかを理解できるように、モデルに合うようにサンプル コードを変更しました。

var stream = Bericht.find().stream()
  , names = []
  , i;

function closeHandler() {
  console.log(JSON.stringify(names));
};

stream.on('data', function (doc) {
  if (doc.name) {
    names.push(doc.name);
  }
})

stream.on('error', function (err) {
  // handle err
})

stream.on('close', closeHandler)
于 2012-07-30T14:18:37.790 に答える