我正在使用nodejs创建一个API,并且获得了以下数据集
[ { _id: 5ef054487c20460017dcbde8,
post_data: 'paw nisa dmme vahi ponnaya',
likes: 2,
commentsCount: 0,
post_img: null,
isUserLiked: false,
usersLiked: [ 5eef7fc55de48230887f3aa3 ],
exp_date: 2020-06-27T00:00:00.000Z,
has_img: false,
user_id: [ [Object] ],
typology: 'post',
geometry:
{ pintype: 'Point',
_id: 5ef054487c20460017dcbde9,
coordinates: [Array] },
created: 1592808520819,
category: [],
createdAt: 2020-06-22T06:48:40.821Z,
updatedAt: 2020-06-22T07:29:00.148Z } ]
我在那里有usersLiked
数组,并将上面的结果保存到posts
变量中,并使用以下代码更改了isUserLiked
。
posts.forEach((post) => {
post.isUserLiked = post.usersLiked.includes(user_id)
});
问题是
post.usersLiked.includes(user_id)
总是在重演 错误
我的mongodb看起来像这样。
我已经尝试过post.isUserLiked = post.usersLiked.includes(mongoose.Types.ObjectId(user_id))
,但是它给出了相同的输出?这可能是什么问题,我该如何解决?
答案 0 :(得分:2)
post.isUserLiked = post.usersLiked.some(id => id.toString() === user_id)
如果user_id
不是字符串,请使用.equals
。在这里https://stackoverflow.com/a/11638104/8443899
答案 1 :(得分:-1)
我认为问题是由您向我们展示的数据集引起的,usersLiked: [ 5eef7fc55de48230887f3aa3 ],
的数组不是字符串。
如果此ID是一个字符串,则可以执行usersLiked.includes('ANOTHER STRING HERE')
我的意思是字符串,我的意思应该是这样的:usersLiked: [ '5eef7fc55de48230887f3aa3' ]