Node.js根据请求ID查询MongoDB记录返回空数组的解决方法
问题定位
查询返回空数组由两处代码错误直接导致:
- 多余的字符拼接:代码中手动给请求传入的accountId值前后拼接了双引号,将原本的字符串
a1处理为"a1",和集合中存储的无多余符号的字符串值不匹配。 - 查询字段名不匹配:查询条件写为
{id}是ES6属性简写,等价于查询条件{ id: 处理后的参数值 },但集合中存储的对应字段名为accountId,字段名错误无法命中任何记录。
修正代码
移除多余的引号拼接逻辑,将查询字段名改为集合实际的accountId字段即可,修正后的实现如下:
exports.getById = async (req) =>{ const targetAccountId = req.body.accountId; const accountRecords = await db.collection('account-details').find({ accountId: targetAccountId }).toArray(); return accountRecords }
效果验证
接口传入请求体{"accountId":"a1"}时,实际执行的查询条件为{accountId: "a1"},和集合内存储的记录字段、值完全匹配,可正常返回对应文档。
内容的提问来源于stack exchange,提问作者Neel
相关产品推荐
相关产品推荐

