首页 > 解决方案 > 通过函数结果设置对象键值

问题描述

无法将探测函数结果分配给newItem对象中的w键。

有什么建议么?

router.post('/', (req, res) => {
    const newItem = new Item({
        src: req.body.src,
        w: probe(req.body.src, function (err, result) {
            return result.width
            // console.log(result.width)
        })
    });

标签: node.jsfunctionexpressobjectcallback

解决方案


probe似乎是异步的,因此该代码将不起作用。推荐的方法是使用Promise& async/await。没有看到probe定义我不能给你一个实现,但是如果你不知道如何将它转换为一个Promise公正的使用util.promisify

const { promisify } = require('util')
const probe = promisify(require('./probe')) // or whatever module

router.post('/', async(req, res) => {

    try {
        const { witdth } = await probe(req.body.src);
        const newItem = new Item({
            src: req.body.src,
            w: witdth
        });
    } catch(e) {
        // Handle error
        res
            .status(500)
            .send('error')
    }
})

推荐阅读