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

这是我主要的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 } ] 

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

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

那么,我该如何获取由数组中的mongoose返回的字段的值? 是否有可能返回没有数组的查询?

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

你可以使用findOne而不是findfindOne将返回一个匹配你的查询的对象,而不是一个数组。

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

我认为你应该这样做:

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

因为callback需要作为第一个参数err