【发布时间】:2018-08-30 21:12:38
【问题描述】:
美好的一天,我想知道我的代码背后的错误,
所以首先我有这个 db.js 代码:
/** check if may fb_id */
module.exports.checkfbid =
async(model, query) => {
return new Promise((resolve, reject) => {
if (!query) {
query = {};
}
console.log("pumasok sa checkfbid"+ JSON.stringify(query));
console.log("pumasok sa checkfbid" + query);
model.find(query)
.then(res => {
console.log("hindi pa napapalitan: "+res);
if(null){
resolve(null);
}else{
console.log("untouched: " + res);
resolve(res);
}
})
.catch(err => {
console.log("rejected si branch" + err);
reject(err);
console.log(err);
throw err;
});
});
}
还有这个 controller.js 代码
const id_result = await usersessionDB.checkfbid(model, {fb_id: id});// store sa id_result
console.log("id_result have: " + id_result);// log kung may nkukuha na laman
if (id_result === null) {// kung null si id_result, create ka new user
...
}
} else {// else kung hindi null si id_result
...
}
编辑! console.logs 的示例输出
请忽略外国的、不可读的 cmets。
如你看到的,
console.log("pumasok sa checkfbid"+ JSON.stringify(query)); 显示来自控制器的查询,但是当它进入 promise 查询时,我使用了
console.log("hindi pa napapalitan: "+res);
if(null){
resolve(null);
}else{
console.log("untouched: " + res);
resolve(res);
}
它不显示东西!?我已经卡了将近 3 个小时了。
总结一下,我的问题是,如果 promise 返回的值甚至没有返回 null 或 undefine,我该如何定义它是 null 还是 undefine?它只是空白吗?还是反过来,它返回一个值,但是什么样的值?空白的? 谢谢。
【问题讨论】:
-
您的代码对我来说看起来不错。
res不是字符串,它是一个对象,尝试以这种方式记录它:console.log("untouched: " , res)和 id_result 相同:console.log("id_result have: " , id_result) -
它现在显示,[](空方括号)
hindi pa napapalitan: [] untouched: [] id_result have: [],但感谢 Jeremy Thille,我现在可以检测它是否为空我更改了if(Object.keys(res).length === 0){ res = null; resolve(res); }else{ console.log("untouched: ", res); resolve(res); },我的逻辑现在可以工作了 -
啊酷,很高兴我能帮上忙 :)
标签: javascript node.js mongoose restify