当前位置:  开发笔记 > 编程语言 > 正文

将GET参数传递给Express + Mongoose Restful API

如何解决《将GET参数传递给Express+MongooseRestfulAPI》经验,为你挑选了1个好方法。

我刚刚进入Node,Express和Mongoose.到目前为止还爱它,但无法弄清楚如何将AJo调用中的MongoDB过滤传递给API.

我有一个简单的jQuery AJAX请求,如下所示:

$.getJSON('/api/products', {
    filter: { status: 'active' } // <-- Want this to get processed by the API
}, function(products){
    console.log(products);
});

以下是Express + Mongoose API的重要部分:

// Define Mongoose Schema
var Schema = mongoose.Schema;

// Product Schema
var ProductSchema = new Schema({
    name: { type: 'string', required: false },
    price: { type: 'number', required: false },
    status: { type: 'string', required: false },
    description: { type: 'string', required: false },
});

// Product Model
var ProductModel = mongoose.model('Product', ProductSchema);

// Product Endpoint
app.get('/api/products', function(req, res){
    return ProductModel.find(function(error, products){
        return res.send(products);
    });
});

Neil Lunn.. 6

您应该按照原样发送已编码的参数.现在您只需要获取它们并将其传递给您的查询:

// Product Endpoint
app.get('/api/products', function(req, res){

    var filter =  {};
    for ( var k in req.query.filter ) {
        filter[k] = req.query.filter[k];   // probably want to check in the loop
    }
    return ProductModel.find(filter, function(error, products){
        return res.send(products);
    });
});

那个循环就在那里,因为你可能想要检查发送的内容.但是我会把它留给你.

此外req.params,如果适合您的口味.



1> Neil Lunn..:

您应该按照原样发送已编码的参数.现在您只需要获取它们并将其传递给您的查询:

// Product Endpoint
app.get('/api/products', function(req, res){

    var filter =  {};
    for ( var k in req.query.filter ) {
        filter[k] = req.query.filter[k];   // probably want to check in the loop
    }
    return ProductModel.find(filter, function(error, products){
        return res.send(products);
    });
});

那个循环就在那里,因为你可能想要检查发送的内容.但是我会把它留给你.

此外req.params,如果适合您的口味.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有