Javascript NodeJS承诺返回[对象未定义]

Javascript NodeJS承诺返回[对象未定义],javascript,node.js,Javascript,Node.js,我有个问题。我正在执行一个数据库调用,以从数据库中的订单收集Id,然后我想使用promise返回该订单的Id,因为数据库调用是异步的。我作出以下承诺: function getNextOrderId() { return new Promise(function(resolve, reject) { orderIdSelected = 0; var sql = ` SELECT * FROM Order

我有个问题。我正在执行一个数据库调用,以从数据库中的订单收集Id,然后我想使用promise返回该订单的Id,因为数据库调用是异步的。我作出以下承诺:

function getNextOrderId() {

    return new Promise(function(resolve, reject) {

        orderIdSelected = 0;

        var sql = `
           SELECT * 
            FROM Orders 
            WHERE userId=5
        `;

        conn.query(sql, function(err, rows, fields) {
            if (err) throw err;
            var length1 = Object.keys(rows).length;

            LogToConsole("length1="+length1);   
            i1 = 0
            while (i1 < length1 && orderIdSelected == 0) {
                
                var OrderId = rows[i1].Id;

                LogToConsole("OrderId="+OrderId);

                if (OrderId == 1134881) {
                    orderIdSelected = OrderId;
                    LogToConsole("orderIdSelected end="+orderIdSelected);
                    resolve(toString(orderIdSelected));
                }
                
                i1++;
                
            }
                
        });
        
    });

}
但是nextOrderId是
[对象未定义]
,在它返回它之前,它在promise函数中有一个值。打印:
LogToConsole(“orderIdSelected end=“+orderIdSelected”)给出:
orderIdSelected end=1134881
。。。。出了什么问题?我如何修复此问题?

toString(1134881)
给出了
“[对象未定义]”

只需
解析(orderIdSelected)
解析(orderIdSelected.toString())


更多关于
toString

的详细信息,您想在这里做什么?这段代码让人觉得既奇怪又复杂。比如,您从DB到节点获取该用户的所有订单,只是为了筛选列表并确定它是否包含给定Id,然后解析该给定Id。为什么不让DB进行筛选,就像它是为这种任务构建的一样。这与要执行的方法的名称有什么关系?或者循环,我很确定这可以做到:
constselected=rows.find(order=>order.Id==1134881)。或者在找不到任何内容时发生内存泄漏。。。
getNextOrderId().then(function(nextOrderId) {

    LogToConsole(nextOrderId);
            
}).catch((err) => setImmediate(() => { throw err; }));