javascript MongoDB:我使用find()来获取一个特定的值,但是却得到了多个结果

cl25kdpy  于 2023-06-04  发布在  Java
关注(0)|答案(1)|浏览(109)

我在做一个Facebook的克隆版,准备上传一张个人资料照片。我有一个带有profilePicture对象的User模式。用户访问该页面,上传一张图片,该图片的URL将被添加到其profilePicture值中。
User架构

const userSchema = new mongoose.Schema({
  username: String,
  profilePicture: String,
});

下面是一个用户在数据库中的样子的例子。

_id: 642716b83w306234dx8d6cab
username: "Dagger"
profilePicture: "public\images\uploads\a7c770ff72d830a4fb0c8f6963ab9aa8"

下面是对我的profilePicture的GET请求。我正在使用User.find()查找profilePicture

router.get("/:user/profile-picture", (req, res) => {
  User.find({}, "profilePicture").exec(function (err, profilePicture) {
    if (err) {
      return next(err);
    }
    res.render("picture", { user, id, picture, profilePicture });
  });
});

但是当我将img代码添加到ejs页面时,什么也没有显示。

<div class="avatar">
  <img src="<%= profilePicture %>.jpg" alt="logo" />
</div>

当我检查元素时,我注意到<%= profilePicture %>的值是我的数据库中每个用户的列表。我怎样才能缩小它的范围,使我只得到设置为"public\images\uploads\a7c770ff72d830a4fb0c8f6963ab9aa8"的值?

llew8vvj

llew8vvj1#

您可能希望使用findOne()并指定要搜索的参数。
例如:

User.findOne({ username: 'Dagger'}, "profilePicture").exec(...)

由于您希望它是动态的,因此需要用一个变量替换我在这里使用的硬编码的'Dagger'值,这样您就可以确定要提取哪个用户的照片。

相关问题