Mongodb.find返回空数组[重复]
Posted
技术标签:
【中文标题】Mongodb.find返回空数组[重复]【英文标题】:Mongo DB.find returning empty array [duplicate] 【发布时间】:2021-06-22 19:47:11 【问题描述】:我有这行代码
const comments = await db.Comment.find(post: req.params.post_id);
return res.status(200).json(comments);
请求已成功发送到后端,但 cmets 响应为空数组
/*
res code: 200
*/
comments: []
我检查了其他数据库功能,它们都可以正常工作,例如添加评论、编辑等
我的评论集是这样的
"_id":"$oid":"605d1faeb202e4425c004be9","text":"Welcome to this comment","user":"$oid":"5ff5d878dd830142686b7fd5","post":"$oid":"6016f770ea76030d24688f89","createdAt":"$date":"$numberLong":"1616715694247","updatedAt":"$date":"$numberLong":"1616715694247","__v":"$numberInt":"0"
--------------------------------------------------------
"_id":"$oid":"605d1fb8b202e4425c004bea","text":"Welcome to this comment2","user":"$oid":"5ff5d878dd830142686b7fd5","post":"$oid":"6016f770ea76030d24688f89","createdAt":"$date":"$numberLong":"1616715704381","updatedAt":"$date":"$numberLong":"1616715704381","__v":"$numberInt":"0"
我正在尝试按在我的评论收藏中保存为帖子的帖子 ID 进行搜索
【问题讨论】:
req.params.post_id
是一个字符串,post
字段是一个 ObjectId。见Mongoose String to ObjectID
【参考方案1】:
我认为您需要将 req.params.post_id
包装在 ObjectId 中。
像这样
const ObjectId = require('mongoose').Types.ObjectId;
const comments = await db.Comment.find(
post: new ObjectId(req.params.post_id)
);
【讨论】:
Mongoose: comments.find( 'post.$oid': '6059444e21d546156cfce227' , projection: )
还是不行
您是否遇到任何错误?
还是空数组?
返回了空数组
我认为您需要将 req.params.post_id
包装在 ObjectId 中。试试我更新的答案以上是关于Mongodb.find返回空数组[重复]的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB find() 使用 mongoose 返回空 - node.js [重复]
给定一个只包含正整数的非空数组,返回该数组中重复次数最多的前N个数字 ,返回的结果按重复次数从多到少降序排列(N不存在取值非法的情况)