Javascript NodeJS承诺返回[对象未定义]
我有个问题。我正在执行一个数据库调用,以从数据库中的订单收集Id,然后我想使用promise返回该订单的Id,因为数据库调用是异步的。我作出以下承诺: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
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; }));