Javascript 如何使用mongoose db.collection.find()返回的值编写条件逻辑?

Javascript 如何使用mongoose db.collection.find()返回的值编写条件逻辑?,javascript,express,mongoose,ecmascript-6,es6-promise,Javascript,Express,Mongoose,Ecmascript 6,Es6 Promise,晚上好 我正在从事一个个人项目,我正在试图找出为什么我不能从我的后端API获得正确的响应。下面您将找到我正在编写的其中一个路由的代码。在这里,我试图通过arcana字段从数据库中获取一个人物角色 我的想法是,如果mongoose方法find()无法找到具有给定arcana的人物角色,那么我应该返回404错误,并返回json响应,详细说明出错的原因 我想我可以这样做:if(!personas)where personas是mongoose db.collection.find()返回的。这不起作用

晚上好

我正在从事一个个人项目,我正在试图找出为什么我不能从我的后端API获得正确的响应。下面您将找到我正在编写的其中一个路由的代码。在这里,我试图通过arcana字段从数据库中获取一个人物角色

我的想法是,如果mongoose方法find()无法找到具有给定arcana的人物角色,那么我应该返回404错误,并返回json响应,详细说明出错的原因

我想我可以这样做:if(!personas)where personas是mongoose db.collection.find()返回的。这不起作用,我的API返回空方括号,状态为200 OK。我所有的测试都是通过邮递员完成的

代码中的console.log是我的调试语句

log(personas=={}?true:false);返回false

console.log(角色类型);返回对象

log(personas==[]?true:false);返回false

log(personas==未定义?true:false);返回false

router.get("/personas/by/:arcana", (req, res) => {
const errors = {};
// The below logic is not working. We're not sending a 404 on failure.
Persona.find({ arcana: req.params.arcana })
.then(personas => {
  console.log(personas === {} ? true : false);
  console.log("What is the type of the personas variable?",typeof personas);
  console.log(personas === [] ? true : false);
  if (!personas) {
    errors.no_personas =
      "There are no personas in the compendium with that arcana.";
    return res.status(404).json(errors);
  }
  res.json(personas);
})
.catch(err => res.status(404).json({ personas: "There are no personas." }));
});

如何编写逻辑以便从后端返回正确的状态代码?

如果(!personas.length)
如果(personas.length==0)
。如果
personas
是一个空数组或对象,则它不是假的。

不能使用“==”将两个对象或数组等同起来。只有在比较指向同一对象的两个变量时,才会得到true:
const obj1={test:'1'};常数obj2=obj1
obj1==obj2返回true;