我是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>
我可以看到一些关于休息服务的例子吗? 谢谢
答案 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}});
}
});
});
我只是给出一个粗略的主意。如果仍不能解决问题,请同时使用您的架构(模型)更新帖子