繁体   English   中英

从mongodb创建项目数组-Node js

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM