今天在使用 MongoDB + NodeJS + mongoose 学习时发现一个现象。
find 方法返回的类型一般为一个数组,但有时候会返回空。
代码(部分)
定义类
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