猫鼬查询返回数组而不是对象

时间:2020-05-24 22:20:13

标签: express mongoose

我的猫鼬查询遇到了一个奇怪的问题。当我执行db.collection.find()时,应该返回预期的对象。我在mongo shell

mongo_shell

当我在快速路由器端点中执行类似查询时,得到数组而不是对象。喜欢

[
    {
        "dishes": [
            "5eca615117611c0480320c12",
            "5eca615117611c0480320c15"
        ],
        "_id": "5ecae7eb2e746b312cfdf59e",
        "user": "5ec644d06715633270d0414d",
         ...
    }
]

这会在我的前端反应应用程序中导致错误。这是我最喜欢的模型中的架构:

var favoriteSchema = new Schema(
  {
    dishes: [
      {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Dish',
        unique: true,
      },
    ],
    user: {
      type: mongoose.Schema.Types.ObjectId,
      ref: 'User',
    },
  },
  {
    timestamps: true,
  }
);

这是我的明确终点:

.get((req, res, next) => {
    Favorites.find({})
      .then(
        (favorite) => {
          res.statusCode = 200;
          res.setHeader('Content-Type', 'application/json');
          res.json(favorite);
          console.log(favorite);
        },
        (err) => next(err)
      )
      .catch((err) => next(err));
  })

衷心感谢是否有人帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

如果您要查找单个结果或为null,则可能希望将findOne与猫鼬一起使用。如果您使用find,则预期结果将超过一行。

请记住,您应该处理“收藏夹”为null(当您找不到要查找的行时)的情况。此时,您可能需要返回其他响应。

答案 1 :(得分:0)

.find({parameter})通过给定参数返回数据库中的所有对象。