这是我的主要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返回的字段的值?是否可以在没有数组的情况下返回查询?
答案 0 :(得分:2)
您可以使用findOne
代替find
。 findOne
将返回与您的查询匹配的单个对象,而不是数组。
Hacker.findOne({name: "arun"}, fields)
答案 1 :(得分:2)
我认为你应该这样做:
exports.myfun = function(err, hackers) {
// ...
}
因为回调将err
作为第一个参数
答案 2 :(得分:1)
使用findOne()
代替find()
。这将返回一个JSON对象,而不是JSON对象的数组。