具有添加方法的导出模块返回对象

时间:2019-12-05 21:36:33

标签: node.js

我有以下代码:

app.post("/login/auth", (req, res) => {
    (async function() {
        let NikitaBellucci = (await auth.login(req, db, crypto))[0];
        res.send(NikitaBellucci);
    })();
});

exports.login = (req, db, crypto) => {
    pro = new Promise((resolve,reject) => {
        let pseudo = req.body.pseudo;
        let password = crypto.createHmac('sha256', req.body.password)
                       .update('jojofags suck')
                       .digest('hex');
        let query = "SELECT * FROM users WHERE users.pseudo = ? AND users.password = ? LIMIT 1";
        db.query(query, [pseudo, password], function (err, result) {
            if (err) throw err; // GESTION D'ERREURS
            result.isAdministrator = function() {
                if(this.role <= 90) { return true; } else { return false; }
            }
            resolve(result);
        });
    })

    return pro.then((val) => {
        console.log(val);
        return val;
    })
}

console.log(val);上,我可以看到先前添加到对象中的方法。但是,当将其返回到我的主文件方法“消失”时,如何避免这种情况?

谢谢

1 个答案:

答案 0 :(得分:0)

您的函数已附加到整个结果对象,但是您在0中获得了该函数的(await auth.login(req, db, crypto))[0];属性,而该属性没有该函数。只需删除[0],然后NikitaBellucci.isAdministrator就可以了。