【问题标题】:Mongoose query returns emptyMongoose 查询返回空
【发布时间】:2019-08-29 16:08:39
【问题描述】:

我正在尝试创建一个 Node.js API 端点来返回一些用于填充选择控件的值。

我在名为 projectStatusValues 的集合中有以下文档...

{
  "_id": {
    "$oid": "5cab4b2b38802527df2f7ab2"
  },
  "projectStatusDesc": [
    "Complete",
    "Pre-Start",
    "Active"
  ]
}

而我的 Mongoose 模型被定义为...

const projStatusModel = mongoose.model("projectStatusValues", {
    "projectStatusDesc": [
        String
    ]
});

最后,我正在使用这段代码来检索数组值...

app.get('/v1/projStatus', async (request, response) => {
    try {
        var status = await projStatusModel.find().exec();
        response.send(status);
    } catch (error) {
        response.status(500).send(error);
    }
});

端点看起来不错,我得到了 200 响应,但返回了一个空字符串。有什么想法吗?

谢谢!

【问题讨论】:

  • 顺便说一句,您没有指定项目 ID。放置控制台登录状态。它会返回一个字符串是没有意义的,find 不会返回字符串。
  • 感谢您的评论。我不需要在这里返回项目 ID。 find 有什么回报?我期待 JSON 这是一个字符串吗?
  • Find 会返回一个数组,所有找到的文档都是 javascript 对象

标签: node.js mongodb mongoose


【解决方案1】:

你不见了Schema

const Schema = mongoose.Schema;
const projStatusModel = mongoose.model("projectStatusValues", new Schema ({
    "projectStatusDesc": [
        String
    ]
}));

【讨论】:

  • 谢谢。试过了,但仍然返回和空字符串。我有其他 API 似乎可以在没有定义模式的情况下正常工作,只是像我的示例一样使用模型。我应该总是定义架构吗?考虑到我的其他 API 都可以正常工作,不定义它的后果是什么?
  • 我不知道没有模式它会工作,但由于the documentation 每次都使用模式,我建议也这样做。我注意到您将模型命名为projectStatusValues,并在您的控制器中使用projStatusModel。是故意的吗?
  • projectStatusValues 是集合的名称
  • 在定义为常量和在控制器中使用时,我将模型命名为 projStatusModel。
【解决方案2】:

将集合从 projectStatusValues 重命名为 projectstatusvalues,这很有效。

【讨论】:

    猜你喜欢
    • 2018-06-12
    • 2021-07-22
    • 2012-02-23
    • 2015-04-18
    • 2019-11-30
    • 2022-06-14
    • 2018-06-20
    • 2014-12-04
    • 1970-01-01
    相关资源
    最近更新 更多