节点js REST服务mongodb不同数组为空

时间:2018-09-09 15:10:45

标签: arrays node.js mongodb distinct

我是一名初级开发人员,正在使用Azure上的Node JS,Express,MongoDB开发REST服务。 在我的数据库上,我有一个包含型号,类型等字段的更多机器的集合,当我执行不同的查询时,我会收到一个字符串数组作为响应。 示例:

[
"Massey Ferguson",
"JOHN DEERE",
"FENDT",
"NEW HOLLAND",
"CASE-IH",
"DEUTZ-FAHR",
"VALTRA/VALMET",
"SAME",
"BCMH",
"CASE",
"CATERPILLAR",
"CHALLENGER"
]

现在我已经编写了GET服务:

router.get('/machine_brand', function(req,res){
Machine.find().distinct('Brand', (err, items) => {
    if (err) {
        console.log(err);
        return res.status(400).send({ status: 'ko', data: {msg: err.message }});
        console.log(err);
    }
    console.log(items);
    res.status(200).send({status: 'ok', data: {msg: 'Brands available', brand:items}});
});
});

服务响应为200,但作为json响应,我收到一个空数组

{
"status": "ok",
"data": {
    "msg": "Brands available",
    "brand": []
}

}

为什么数组为空? 如何将与我在robomongo上运行的mongo查询相同的响应排列成数组? 我也尝试过使用find()和ruslt相同:空数组[]

router.get('/machine', function(req,res){
Machine.find({}, (err, machine) => {
    if (err) {
        console.log(err);
        return res.status(400).send({ status: 'ko', data: {msg: err.message }});
    }
    res.status(200).send({status: 'ok', data: {msg: 'Lista machine', machine: machine}});
});

}); 这是我的模型:

var db = require('../config/db.js');


var MachineSchema = db.Schema({
Brand: {type: String, required: true},
Model: {type: Number, required: true},
Version:{type: String, required: true},
Hp: {type: String, required: true}

});

db.model('Machine', MachineSchema);

module.exports = db.model('Machine');

感谢您的帮助 最好,

1 个答案:

答案 0 :(得分:0)

这似乎应该起作用,而您完全得到回应的事实是一个好兆头。我的第一个建议是确保集合名称与数据库正确匹配。我刚刚测试了一段代码(获取名称为“ UsErS”的集合),看来MongoDB在这种情况下不会引发错误,而只是使用提供的名称创建了一个新的空集合。

编辑:如果您正在使用其他库获得填充的响应,则还要仔细检查库的初始化,以确保其命中了正确的数据库,等等。