猫鼬无法按数字字段搜索

时间:2018-10-05 22:57:03

标签: node.js mongodb mongoose

我有一个架构,该架构的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()

我真的迷失了。

1 个答案:

答案 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 :)
    } 
});

另外,非常相似的APIfindOne

 ToyModel.findOne({_id: id}, function (err, toy) { ... });