使用类似运算符inito MongoDB的Node JS Rest Service

时间:2019-01-19 14:24:51

标签: node.js mongodb express

我是Node JS Develop的新手。我已经使用Express和Mongo DB开发了特定的REST服务。 现在,我需要开发一个休息服务,当我传递一些字母时,它会得到包含这些字母的项目的数组。我想我可以使用like运算符开发GET Rest服务。 我已经尝试过使用此代码,但是错误:

router.get('/tire/autocomplete/:size', VerifyToken, function(req,res){
var size=req.params.size;
TechInfo.find({ Size: new RegExp(size, 'i') }).toArray(err, techinfos) => {
    if (err) {
        console.log(err);
        return res.status(400).send({ status: 'ko', data: {msg: err.message }});
        console.log(err);
    }
    res.status(200).send({status: 'ok', data: {msg: 'Size tires available', tires :techinfos}});
});
});

这是我的模型架构

var TechInfoSchema = new Schema({

"ID_code" :{type: Number, required: true},
"inches" : {type: Number, required: true},
"Brand" : {type: String, required: true},
"Size" : {type: String, required: true},
"type" : {type: String, required: true}
},{
collection: 'techInfo'
});

var TechInfo = db.model('TechInfo',TechInfoSchema)
module.exports = TechInfo;

当我使用邮递员致电我的休息服务时,我会收到此错误

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Error</title>
</head>
<body>
    <pre>Cannot GET /api/v1.0/equipment/tires/autocoplete</pre>
</body>

我可以看到一些关于休息服务的例子吗? 谢谢

1 个答案:

答案 0 :(得分:1)

为什么要使用find将最终结果转换为数组?它已经是一个数组

router.get('/tire/autocomplete', VerifyToken, function(req,res){
var size=req.params.size;
TechInfo.find({ Size: new RegExp(size, 'i') },(err, techinfos) => {
    if (err) {
        console.log(err);
        return res.status(400).send({ status: 'ko', data: {msg: err.message }});
        console.log(err);
    }else{
    res.status(200).send({status: 'ok', data: {msg: 'Size tires available', tires :techinfos}});
    }

});
});

我只是给出一个粗略的主意。如果仍不能解决问题,请同时使用您的架构(模型)更新帖子