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

    xiaoxiao2023-11-24  180

    今天在使用 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。

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

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

    通过非 _id 字段查询。以 movie_name 为例。记录不存在的情况下,返回空数组,可以取到 data.length 值为 0
    最新回复(0)