我在ajax调用中将以下对象传递给Mongoose:
{category: 'name', direction: 1}
我正在使用Mongoose对查询结果进行排序,如下所示:
Site.find(query).sort(sortBy)
在此调用之前,我想从ajax调用中获取对象,正确格式化并插入查询中。我这样做:
let sortBy = {};
let tmp = req.query['sortBy'];
sortBy.category = tmp["category"];
sortBy.direction = tmp["direction"];
然而,这给了我这个错误:
TypeError: Cannot read property 'toString' of undefined
当我安慰tmp时,我得到:
tmp {"category":"name","direction":1}
然而,当我控制掉tmp [“category”]和tmp [“direction”]时,我得到:
undefined undefined
为什么我不能将它解析为对象键?
更新:
以下解决方法效果很好,但我仍然感到困惑,为什么上面的代码没有:
var tmp = {};
var sortBy = {};
Object.keys(req.query).map(prop => {
if (prop === 'direction') {
tmp[prop] = parseInt(req.query[prop]);
} else if (prop === 'category') {
tmp[prop] = req.query[prop]
}
});
sortBy = {[tmp.category]: tmp.direction};
为什么我需要这个tmp对象?
答案 0 :(得分:0)
这个问题也发生在我身上。解决方案是定义模式中字段的定义,否则将是未定义的。