Estoy tratando de encontrar un registro en mi mongo db por su id
No importa si uso findbyid(), findone(id,...), devuelve nulo
aquí está mi código. ¿cuál es la solución?
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/Movie', {useNewUrlParser: true}) .then(() => console.log('Connected to Databse')) .catch(err => console.err('Could not connect to MongoDB', err)); var ObjectId = require('mongodb').ObjectID; const Schema = new mongoose.Schema({ name: String, author: String, tags: [String], date: Date, isPublished: Boolean, price: Number }); const Data = mongoose.model('Datas', Schema); async function updateData(id){ const result = await Data.findById(id); console.log(result); } updateData('5a6900fff467be65019a9001');Yo tuve el mismo problema. El _id en mi colección de bases de datos era una String . Después de habilitar la depuración de mongoose require('mongoose').set('debug', true) , descubrí que la id de la consulta de mangosta era ObjectId("yourId") a menos que definamos _id en el esquema. Para resolver el problema, tuve que agregar _id:String en el esquema de mongoose.
const MyDataSchema = new Schema({ _id: String, ... ... }Hay una solución simple para esto:
Reemplazar
const result = await Data.findById(id);con
const result = await Data.findById(id).exec(); Ver Mongoose - ¿Qué hace la función exec? para una explicación de lo que hace exec()
Verifique su base de datos mongodb, si _id está almacenado como String, findById(id) no puede encontrar id . FindById(id) solo finds ObjectId('yourId') . Puede importar la base de datos utilizando mongoimport e incluyendo _id en JSON, está mal, elimine _id en JSON importado.