如果mongoose为find()或findOne(),则返回值分别为[]和null,如果条件不为真。并且此返回值将被分配给数组,但我不希望它发生。目前,我正在执行filterMessage()以跳过数组中的所有空值,但在大量消息的情况下,这不是理想的方式。这是代码:
async media(receiverId, page, size, callback) {
var promises = [];
var groupMessageMaps = await GroupMessageMap.find({
groupId: receiverId.toString()
});
groupMessageMaps.map((groupMessageMap) => {
var message = Message.findOne({
$and: [{
_id: groupMessageMap.messageId
}, {
'type': {
$in: ['image', 'video', 'doc']
}
}]
}); //if Message.findOne() is null then not push to the array
promises.push(message);
});
var messages = await Promise.all(promises);
console.log(messages); //contains null values also
messages = this.filterMessage(messages).reverse();
if (messages.length < size) {
callback(messages);
} else {
messages = messages.splice(messages.length - size);
callback(messages);
}
}
有没有办法跳过[]或null来通过promises.push(message)行分配给数组消息。
答案 0 :(得分:0)
不使用 holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SeatDetails seatDetails = seatDetailsList.get(position);
if (seatDetails.isSelected){
seatDeselected(position);
holder.getImageView().setImageBitmap(seatSelect); // Modify state
}
else
{
seatSelected(position);
holder.getImageView().setImageBitmap(seatSelect); // Modify state
}
}
});
方法,而是使用技巧从消息数组中删除所有filterMessage
值。如下:
falsy
Falsy值包括:
messages = messages.filter(Boolean)
了解有关假值的更多信息