Ken*_*nny 1 mongoose mongodb node.js express
我正在尝试通过ID在我的mongo数据库中查找记录
无论我使用findbyid(),findone(id,...),它都将返回null
这是我的代码。解决办法是什么?
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');
Run Code Online (Sandbox Code Playgroud)
小智 5
我有同样的问题。我的数据库集合中的_id是String。启用mongoose调试后require('mongoose').set('debug', true),我发现mongoose查询id与ObjectId("yourId")除非_id 在Schema中定义一样。为了解决该问题,我必须添加_id:String到猫鼬模式中。
const MyDataSchema = new Schema({
_id: String,
...
...
}
Run Code Online (Sandbox Code Playgroud)
小智 5
有一个简单的解决方案:
代替
const result = await Data.findById(id);
Run Code Online (Sandbox Code Playgroud)
和
const result = await Data.findById(id).exec();
Run Code Online (Sandbox Code Playgroud)
请参阅Mongoose - exec 函数有什么作用?解释什么exec()是
| 归档时间: |
|
| 查看次数: |
2681 次 |
| 最近记录: |