我真的需要帮助。我使用node.js与mongodb和mongoose。到目前为止,我已经设法创建了一个模式并将其保存到我的数据库中。
var Bericht = new Schema({
name : String
, mail : String
, betreff : String
, inhalt : String
, datum : Date
});
var Bericht = mongoose.model('Bericht', Bericht);
我有一个html公式,我可以用misc传输。字段数据,通过查询字符串将其转换为可读字符串
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;}
}
);
控制台向我提供了我的架构Bericht中保存的所有数据,不包括long _id的东西。样本输出: [{name:'Hans',mail:'hans@wurst.de',betreff:'我丢了我的香肠',inhalt:'看着我,我很棒'}] 这只是一个,通常会有大量的数据。 现在的想法是只将名称提取到像“Hans”这样的字符串中。我想把这个名字变成一个var,但看起来好像不可能! 我试过了
Bericht.find(
{},
{ '_id': 0},
function(err, docs) {
if (!err){
console.log(docs.name);
// process.exit();
}
else { throw err;}
}
);
但我得到的只是“未定义”。感谢您的帮助!
答案 0 :(得分: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)
答案 1 :(得分: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;}
}
);