以下功能将返回特定类型的所有菜单项。这些类型存在于数据库中,但查询不返回任何数据。没有查询条件:{type:menuItem},它将返回具有类型的数据。
exports.get = async (menuItem) => {
console.log(chalk.green('menuItem', menuItem));
try {
const menu = await Menu.find({type:menuItem});
console.log('menu', menu);
return menu;
} catch(error) {
console.log(error)
}
}
如上功能所示,登录到控制台的MenuItem会产生以下结果。问题似乎出在菜单项变量上,因为当我对{type:'pizza'}进行硬编码时,它可以工作。
console.log(chalk.green('menuItem', menuItem));
menuItem 'pizza'
丑陋的查询字符串如下所示,这是否有问题:
private menuUrl = '/api/menu?menuItem="pizza"';
从数据库中采样数据:
{ quantity: 1,
toppings: [ 'chipotle-steak', 'red-onions' ],
_id: 5d163a7ae7179a4e432b501a,
type: 'pizza',
name: 'CHIPOTLE STEAK',
price: 15,
img: 'Chipotle-Steak.png',
}
答案 0 :(得分:0)
键type
用于告知mongoose
该特定字段的type
。这就是为什么在猫鼬模式中使用type
作为字段有时会表现得模棱两可的原因。
请将type
更改为kind
并使用{kind : menuItem}
进行搜索,它应该对您有用。
不要忘记将所有文档从type
更新为kind
。
要更新:
Menu.update({},{$rename : {'type' : 'kind'}},{multi:true})
然后使用kind
const menu = await Menu.find({kind:menuItem});
答案 1 :(得分:0)
愚蠢的错误。 Angular查询字符串在披萨周围有单引号:
private menuUrl = "/api/menu?menuItem='pizza'";
它应该没有引号:
private menuUrl = "/api/menu?menuItem=pizza";