我是一名初级开发人员,正在使用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');
感谢您的帮助 最好,
答案 0 :(得分:0)
这似乎应该起作用,而您完全得到回应的事实是一个好兆头。我的第一个建议是确保集合名称与数据库正确匹配。我刚刚测试了一段代码(获取名称为“ UsErS”的集合),看来MongoDB在这种情况下不会引发错误,而只是使用提供的名称创建了一个新的空集合。
编辑:如果您正在使用其他库获得填充的响应,则还要仔细检查库的初始化,以确保其命中了正确的数据库,等等。