如何显示查询结果?

时间:2019-04-02 08:20:04

标签: node.js express node-oracle

我使用这个库oracle-sage。我有一个创建用户的请求。该请求本身正在运行。但是有一个问题,显示的结果看起来像这样:

{
    "isFulfilled": false,
    "isRejected": false
}

结果如何以JSON格式显示创建的条目?

module.exports.create = async function (req, res) {
    const candidate = await User.findOne(
        { LOGIN: req.body.LOGIN }
    )

    if (candidate) {
        res.status(409).json({
            message: 'This login is already taken. Try another one.'
        })
    } else {
        const salt = await bcrypt.genSaltSync(10)
        const password = await req.body.PASSWORD
        const user = User.create({
            LOGIN: req.body.LOGIN,
            EMAIL: req.body.PHONE,
            PASSWORD: bcrypt.hashSync(password, salt)
        });
        try {
            res.status(201).json(user)
        } catch (e) {
            console.log(e)
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题是Model.create返回一个Promise对象,而不是您所期望的用户。这就是您所看到的JSON(一个Promise对象)。您需要等待该Promise完成,然后提取返回值。您可以像其他几行一样使用await关键字来完成此操作。这意味着您应该打电话:

res.status(201).json(user)

编辑:似乎获得的价值不是API文档的一部分,而且我无法在本地复制。 您可以将值存储在变量中并返回。

const userObj = {
    LOGIN: req.body.LOGIN,
    EMAIL: req.body.PHONE,
    PASSWORD: bcrypt.hashSync(password, salt)
};
const user = User.create(userObj);
try {
    res.status(201).json(userObj)