Пн goose findById - PullRequest
       7

Пн goose findById

0 голосов
/ 03 августа 2020

Я отчаянно пытаюсь найти объект, хранящийся в mongodb, с nodejs и mon goose.

Модель объекта выглядит так:

const SimpleResourceSchema = new mongoose.Schema(
  {
    _id: String,
    title: String,
    objective: String,
    url: String,
    content: String,
    active: Boolean,
    type: String,
    owner: String,
  },
  {
    timestamps: true,
    // _id: false,
  }
);

export const SimpleResourceModel = mongoose.model<
  SimpleResource & mongoose.Document
>('simpleResource', SimpleResourceSchema);

Запрос создается со значением параметра 'id' '5f1da9737917360dd038bfc0':

return await SimpleResourceModel.findById(id).exec();

Данные, хранящиеся в mongodb:

{
    "_id": {
        "$oid": "5f1da9737917360dd038bfc0"
    },
    "title": "Learn cooking",
    "objective": "<p>Is the fridge empty ?</p>",
    "content": "...",
    "url": "..",
    "active": true,
    "type": "simple",
    "owner": "5efceb2f63b75c1750846b0a",
    "createdAt": {
        "$date": "2020-07-26T16:04:03.806Z"
    },
    "updatedAt": {
        "$date": "2020-07-26T16:04:03.806Z"
    },
    "__v": 0
}

Я поискал решение, но не нашел любое решение этой проблемы.

Кто-нибудь может помочь?

Ответы [ 3 ]

0 голосов
/ 03 августа 2020

я все равно получаю нулевой ответ, когда пытаюсь:

await SimpleResourceModel.findById(mongoose.Types.ObjectId(id)).exec()
0 голосов
/ 03 августа 2020

Основная проблема в том, что при определении схемы вы определили идентификатор как строку, удаляемую _id: String из определения схемы. и это автоматически c будет добавлено. Если вы хотите добавить _id в машинописный текст, вы можете создать интерфейс

export interface SimpleResource extends Document {
  _id: schema.Types.ObjectId,
  ...

}

, тогда в модели вы напрямую добавляете его, но _id уже определен в интерфейсе документа и убедитесь, что вы устанавливаете @ types / mon goose

export const SimpleResourceModel = mongoose.model<SimpleResource>('simpleResource', SimpleResourceSchema);
0 голосов
/ 03 августа 2020

Пробовали?

var ObjectId = require('mongoose').Types.ObjectId; 
return await SimpleResourceModel.findById(new ObjectId(id)).exec();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...