如何从mongoose mongodb查询中获取字段的值?

时间:2016-04-07 15:02:29

标签: node.js mongodb mongoose

这是我的主要js文件中的一段代码,我用来调用另一个js文件中的函数(js.js)

  var fields = "workaholic alcoholic insomniac";
  var valid = require("./js");
  Hacker.find({name: "arun"}, fields)//, function(err, hackers) {
      .then(valid.myfun)
      .catch(err => console.log(err,fields));

这是我在主js文件中引用的js.js文件

exports.myfun = function(hackers) {
    console.log(hackers);
    console.log(hackers.workaholic);
    var workaholic = hackers.workaholic;
    var alcoholic = hackers.alcoholic;
    var insomniac = hackers.insomniac;
    console.log(workaholic);
    console.log(alcoholic);
    console.log(insomniac);
    show(workaholic,alcoholic,insomniac);
}
    function show(a,b,c) {
        console.log("Am I workaholic: "+a);
        console.log("Am I alcoholic: "+b);
        console.log("Am I insomniac: "+c);
    }

当我执行主js文件时,我注意到我在数组中得到了我的查询响应。

C:\Users\Balajee\Desktop\project\Ultro>node hack
[ { fun: {},
    workaholic: 'Yes',
    alcoholic: 'No',
    insomniac: 'Yes',
    _id: 5706541ba3fe824c2f017680 } ]

当我尝试将这些字段的值设置为变量时,我得到“未定义”

     _id: 5706541ba3fe824c2f017680 } ]
undefined
undefined
undefined
undefined
Am I workaholic: undefined
Am I alcoholic: undefined
Am I insomniac: undefined

那么,我如何获取数组中mongoose返回的字段的值?是否可以在没有数组的情况下返回查询?

3 个答案:

答案 0 :(得分:2)

您可以使用findOne代替findfindOne将返回与您的查询匹配的单个对象,而不是数组。

Hacker.findOne({name: "arun"}, fields)

答案 1 :(得分:2)

我认为你应该这样做:

exports.myfun = function(err, hackers) {
  // ...
}

因为回调将err作为第一个参数

答案 2 :(得分:1)

使用findOne()代替find()。这将返回一个JSON对象,而不是JSON对象的数组。