if (movies[i] == movie._id) { //… } movies里面装的是movie的id,然后我想做个比较,如果匹配的话可以执行某些操作,但是一直进不到if语句里面去,怀疑是object类型比较为false,求解怎么办
if (movie._id.equals(movies[i])) { //... }
@dca
感觉你这个不正确吧。_id 是字符串类型的,没有 .equals 方法。而 movie.id.equals 倒是存在的。
.equals
不知道楼主的 movies 里面装的是什么类型。但有一招肯定行,就是 String(movies[i]) === String(movie._id)
String(movies[i]) === String(movie._id)
那个 _id 是 object,转化成字符串比较就好了。
可以用
_id + ''
//if movie like { { "_id" : ObjectId("5569b95677a7277b5618dd31"),"title":"侏罗纪公园"} if(movie._id =="5569b95677a7277b5618dd31"){ ...do }
movies[i].toString() == movie._id.toString()也行吧
movies[i].toString() == movie._id.toString()
@alsotang 脑昏了没看清, .equals 是mongoose 才提供的方法,没仔细看问的是mongodb
@alsotang 就是转成字符串比较是吧?我想过,我还以为mongodb提供了标准的id比较的方法呢,看来是没有了
@dca 我是用的mongoose驱动的mongodb
@hetianqi 应该有的,这要翻文档了
@alsotang 好吧。那就暂时先用toString来比较了
@dca equals能用的,那么说这是ObjectId提供的方法还是mongoose提供的呢?
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
@dca
感觉你这个不正确吧。_id 是字符串类型的,没有
.equals方法。而 movie.id.equals 倒是存在的。不知道楼主的 movies 里面装的是什么类型。但有一招肯定行,就是
String(movies[i]) === String(movie._id)那个 _id 是 object,转化成字符串比较就好了。
可以用
movies[i].toString() == movie._id.toString()也行吧@alsotang 脑昏了没看清,
.equals是mongoose 才提供的方法,没仔细看问的是mongodb@alsotang 就是转成字符串比较是吧?我想过,我还以为mongodb提供了标准的id比较的方法呢,看来是没有了
@dca 我是用的mongoose驱动的mongodb
@hetianqi 应该有的,这要翻文档了
@alsotang 好吧。那就暂时先用toString来比较了
@dca equals能用的,那么说这是ObjectId提供的方法还是mongoose提供的呢?