【MongoDB】MongoDB + NodeJS + mongoose 的 find 方法返回类型不是数组?

本文讲述在使用MongoDB、NodeJS和mongoose学习时的发现。find方法返回类型通常是数组,有时为空。通过代码和POSTMAN调试展示,用_id或非_id字段查询,记录存在时返回对象数组,不存在时,_id查询返回空,非_id查询返回空数组,不同情况对data.length取值有不同影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在使用 MongoDB + NodeJS + mongoose 学习时发现一个现象。

  • find 方法返回的类型一般为一个数组,但有时候会返回空。

代码(部分)

  • 定义类
//db.js 中引入了 mongoose 模块和 mongodb 的连接配置
var mongoose = require('../common/db');
//定义
var movie = new mongoose.Schema({
  movieName: String,
  movieImg: String,
  movieVideo: String,
  movieDownload: String,
  movieTime: String,
  movieNumSuppose: Number,
  movieNumDownload: Number,
  movieMainPage: Boolean,
});
//静态方法
movie.statics.findById = function (movie_id, callBack) {
  this.find({_id: movie_id}, callBack);
};
movie.statics.findByName = function (movie_name, callBack) {
  this.find({movieName: movie_name}, callBack);
};

var movieModel = mongoose.model('movie', movie);
module.exports = movieModel;
  • 执行类
router.post('/support', function (req, res, next) {
    movie.findById(req.body.movie_id, function (err, data) {
          res.json({status:1, data :data});
    })
}

POSTMAN 调试

  • 通过 _id 查询,记录存在的情况下,返回对象数组,可以取到 data.length 值为 1。

img1

  • 通过 _id 查询,记录不存在的情况下,返回空。取 data.length 会报错。判断 data == null 的值为 true

img2

  • 通过非 _id 字段查询,以 movie_name 为例,记录存在的情况下,返回对象数组。可以取到 data.length 值为 1。

img3

  • 通过非 _id 字段查询。以 movie_name 为例。记录不存在的情况下,返回空数组,可以取到 data.length 值为 0
    img4
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HolaSecurity

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值