首页 > 解决方案 > 使用 Mongoose ORM 创建搜索查询

问题描述

我正在尝试使用 Mongoose ORM 创建搜索查询。搜索很能找到零件号、零件描述或 NSN 号。但是,我不知道用户要搜索这三个中的哪一个。我不确定如何最好地实施此解决方案,或者是否可以使用 Mongoose。

let mongoose = require('mongoose');
let mongooseUniqueValidator = require('mongoose-unique-validator');

// Global variables
let Schema = mongoose.Schema;

// Define part schema
let schema = new Schema({
    // _id: mongoose.Schema.Types.ObjectId,
    nsn: { type: String, trim: true, unique: true, minlength: 1 },
    partList: { type: String, trim: true },
    description: { type: String, trim: true },
    dataSheet: [{
        mrc: { type: String, trim: true },
        tipText: { type: String, trim: true },
        category: { type: String, trim: true },
        categoryDescription: { type: String, trim: true },
        url: { type: String, trim: true },
    }],
    category: { type: String, trim: true, minlength: 1 },
    subcategory: { type: String, trim: true, minlength: 1 },
    filter: { type: String, trim: true, minlength: 1 },
    url: { type: String, trim: true },
    createdAt: Date,
    updatedAt: Date
})

// plugin middleware
schema.plugin(mongooseUniqueValidator);

// create indexes
schema.index({nsn: 'text', partList: 'text', description: 'text'});

// Export schema
module.exports = mongoose.model('Part', schema); ```




``` let searchString = req.params.search

    Part.find({$text: {$search: searchString}})
        .then(part => {
            if (part.length > 0) {
                res.json({
                    confirmation: 'success',
                    part: part
                });
            } else {
                res.status(204)
                    .json({

                    })
            }
        })
        .catch(err => {
            res.status(500)
                .json({
                    confirmation: 'fail',
                    message: err.message
                });
        }) ```

标签: mongoose

解决方案


推荐阅读