【发布时间】:2019-02-08 09:16:58
【问题描述】:
我正在尝试通过其 id 在我的 mongo db 中查找记录
无论我使用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');
【问题讨论】:
-
愚蠢的问题:你 100% 确定数据库中有记录吗?
-
是的,我确定。我在我的数据库中通过“名称”使用了 findone(),它返回了某事。但不适用于“_id”
-
您正在传递字符串,而 findById 需要 objectId。尝试使用 objectid
-
@Sid 是对的..您的数据库中可能没有此特定记录...运行完全相同的代码对我有用..只需添加
Data.create({}).then(console.log)并将返回的 id 复制到你的 updateData 函数... -
这里有一个有趣的点,数据库内部的硬编码_id是一个String类型。几秒钟前我才意识到这一点。因此,findbyid 总是不起作用。现在问题解决了。谢谢大家
标签: node.js mongodb express mongoose