Mongoose中如何正确从查询结果提取Date类型值存入常量?
问题根源
你当前使用find()方法查询数据,该方法默认返回符合查询条件的文档数组,所以你得到的是包含单个createdAt字段对象的数组,无法直接获取到时间值本身。
解决方法
方案1:使用findOne()查询(推荐)
如果serial字段是唯一值,优先使用findOne()直接返回单个文档,性能更好:
// 查询匹配的单条文档 const userDoc = await User.findOne({ serial: serialId }).select('-_id createdAt'); // 直接取createdAt字段,默认就是Mongoose自动转换的Date类型 const date = userDoc?.createdAt ?? null;
方案2:从find()返回的数组中取值
如果你必须使用find()方法,可以直接取数组的第一个元素的字段值:
const userList = await User.find({ serial: serialId }).select('-_id createdAt'); const date = userList[0]?.createdAt ?? null;
类型验证
以上两种方法获取的date本身就是原生Date类型,你可以通过如下代码验证:
console.log(date instanceof Date); // 输出 true
内容的提问来源于stack exchange,提问作者Areeba Akhtar
相关产品推荐
相关产品推荐

