我有一个架构,该架构的new
字段设置为id
。当我使用string
时,它什么也不返回。
我尝试将collection.find({id: somenumber})
强制转换为字符串和数字。我尝试过通过发送somenumber
作为正则表达式。我尝试将somenumber
放在引号中,然后裸露...我不知道发生了什么。任何帮助和建议,将不胜感激。
id
我的index.js就是这样
Toys.js
var Schema = mongoose.Schema;
var toySchema = new Schema( {
id: {type: String, required: true, unique: true},
name: {type: String, required: true},
price: Number
} );
我知道我的mongoDB实例中有一个带有app.use('/findToy', (req, res) => {
let query = {};
if (req.query.id)
query.id = req.query.id;
console.log(query);
// I've tried using the query variable and explicitly stating the object as below. Neither works.
Toy.find({id: '123'}, (err, toy) => {
if (!err) {
console.log("i'm right here, no errors and nothing in the query");
res.json(toy);
}
else {
console.log(err);
res.json({})
}
})
的玩具。如果我执行id: '123'
,它将返回:
Toy.find()
我真的迷失了。
答案 0 :(得分:1)
This是您要寻找的。请访问链接以获取参考,但这是一个小片段。
就本例而言,即使Mongo创建了一个动态ID [_id],也让我们拥有一个静态ID。也许这是什么问题。如果您已经在数据库中使用该ID进行了记录,则无需手动添加它,特别是无需手动添加它。无论如何,删除您的数据库集合,然后尝试以下简单示例:
// Search by ObjectId
const id = "123";
ToyModel.findById(id, (err, user) => {
if(err) {
// Handle your error here
} else {
// If that 'toy' was found do whatever you want with it :)
}
});
另外,非常相似的API是findOne
。
ToyModel.findOne({_id: id}, function (err, toy) { ... });