【问题标题】:How do I perform a find query in Mongoose?如何在 Mongoose 中执行查找查询?
【发布时间】:2017-07-21 08:59:02
【问题描述】:

我在 mongodb 中有一组电子书数据,例如

{ 
    "_id" : ObjectId("58b56fe19585b10cd42981d8"), 
    "cover_path" : "D:\\Ebooks\\uploads\\ebooks\\cover\\1488285665748-img1-700x400.jpg", 
    "path" : "D:\\Ebooks\\uploads\\ebooks\\pdf\\1488285665257-Webservices Natraz.pdf", 
    "description" : "ebook", 
    "title" : "book name", 
    "tag" : [
        "Hindi", 
        "Other"
    ], 
    "__v" : NumberInt(0)
}

现在我想搜索一些东西,如果关键字与"title:" 有点匹配,然后显示所有相关的书籍对象。

我的 Mongoose 架构是:-

var mongoose     = require('mongoose');
var Schema       = mongoose.Schema;

var EbookSchema   = new Schema({
    title: {type:String},
    description: {type:String},
    path: {type:String,required:true},
    cover_path: {type:String,required:true},
    tag: [{ type: String }]

});
module.exports = mongoose.model('Ebook', EbookSchema);

我试试:-

app.get('/ebook?search=',function(req,res){
var search_key = req.param('search');
    Ebook.find(title:'search',function(err, ebooks) {
            if (err)
                res.send(err);

            res.json(ebooks);
        });
    });

但我发现 null 我该怎么办?我只想在搜索一点点关键字时找到所有相关对象。

【问题讨论】:

  • 你为什么要做title: 'search'而不是像title: search_key那样搜索你从请求参数中得到的search_key?

标签: node.js mongodb express mongoose mongoose-schema


【解决方案1】:

试着用花括号包裹你的查询,Mongoose 期望一个对象作为查询。

app.get('/ebook?search=',function(req,res){
var search_key = req.param('search');
    Ebook.find({title: search_key})
       .then(ebooks => res.json(ebooks))
       .catch(err => res.status(404).json({ success: false }));
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-09
    • 2021-11-26
    • 2011-08-14
    • 1970-01-01
    • 1970-01-01
    • 2018-05-24
    • 2016-05-07
    • 2012-10-24
    相关资源
    最近更新 更多