[英]Create array of items from mongodb - node js
我是mongodb和node js的新手,如果这很简单,请原谅。 所以我有一个模式:
var mongoose = require('mongoose');
var CatSchema = new mongoose.Schema({
cat_name: String,
cat_value: Number
});
module.exports = mongoose.model('Cat', CatSchema);
当我向数据库中添加数据时,它看起来像这样:
> db.cats.find()
{ "_id" : ObjectId("..."), "cat_name" : "test1", "__v" : 0, "cat_value" : 55 }
{ "_id" : ObjectId("..."), "cat_name" : "test2", "cat_value" : 24, "__v" : 0 }
{ "_id" : ObjectId("..."), "cat_name" : "test1", "__v" : 0, "cat_value" : 70 }
我想调用数据库并为集合中的每个文档创建一个cat_names数组。
因此,最终效果如下所示:
var cat_names = [test1, test2, test1 ... ]
任何想法如何做到这一点? 我尝试使用foreach
循环db.collection('cats')
但我只是无法弄清楚。
您可以使用exec,这将允许您返回检索到的JSON文档的数组。
db.cats.find(function(err, cats){
var arr_docs = cats.map(function(cat) { return cat.cat_name});
if(err){
res.json(err)
} else {
res.json(arr_docs)
}
})
这对我有用:var cat_names = [];
Cat.find(function(err, data){
if(err){
console.log(err);
}
var stringify = JSON.stringify(data)
content = JSON.parse(stringify);
content.forEach(function(result){
cat_names.push(result.cat_name);
})
console.log(cat_names);
})
var cat_names = [];
db.cats.find(function(err, data){
if(err){
console.log(err);
}
data.forEach(function(result){
cat_names.push(result.cat_name);
})
console.log(cat_names);
})
我已经测试过此代码,并且可以很好地满足您的要求。
Cat
.find()
.then(function(cat){
var cat_Names_Array = [];
cat.map(function(value){
cat_Names_Array.push(value.cat_name);
});
return cat_Names_Array;
})
.catch(function(err){
console.log('err in finding:',err);
});
希望它能解决您的查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.