检查对象数组是否包含特定字段值,如果不存在Mongoose,则返回false

cgyqldqp  于 2023-03-12  发布在  Go
关注(0)|答案(1)|浏览(97)

我尝试使用mongoose编写一个查询,在该查询中,我扫描一个数组,如果指定的用户名不在数组中,则返回false。例如,如果有user 1,他们的friends数组包含user 2对象和user 3对象,我运行hasFriend(user 1,user 4),它应该返回false或空数组。
用户模型:

const userSchema = mongoose.Schema({
  username: {
    type: String,
    required: true,
    unique: true,
  },
  email: {
    type: String,
    required: true,
    unique: true,
  },
  password: {
    type: String,
    required: true,
  },
  conversations: {
    type: Array,
  },
  image: {
    type: String,
    required: true,
  },
  friends: {
    type: Array,
  },
});

尝试的查询:

const hasFriend = (user, recipient) => {
  return User.find(
    { username: user.username },
    { "friends.username": recipient.username }
  );
};

尝试使用async/await,但仍返回如下所示的对象:

[
  {
    _id: new ObjectId("6402203d2659ad6396b95cb2"),
    friends: [ [Object] ]
  }
]
qyzbxkaa

qyzbxkaa1#

你的查询看起来不错
你只需要Async/Await到你的函数中,就像这样:

const hasFriend = async (user, recipient) => {
  return await User.find(
    { 
       username: user.username,
       "friends.username": recipient.username
    }
  );
};

相关问题