Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 返回空数组的Mongoose查询_Node.js_Express_Mongoose - Fatal编程技术网

Node.js 返回空数组的Mongoose查询

Node.js 返回空数组的Mongoose查询,node.js,express,mongoose,Node.js,Express,Mongoose,下面是我的express端点,它返回一个空数组 router.get('/myUnits/:landlord_id', wagner.invoke((Apartment) => { return (req, res) => { Apartment.find({ postedBy: req.params.landlord_id }, (err, apt) => { if (err) { return res.status(s

下面是我的express端点,它返回一个空数组

router.get('/myUnits/:landlord_id', wagner.invoke((Apartment) => {
    return (req, res) => {
      Apartment.find({ postedBy: req.params.landlord_id }, (err, apt) => {
        if (err) {
          return res.status(status.INTERNAL_SERVER_ERROR)
                    .json({ error: err.toString() })
        }
        if (!apt) {
          return res.status(status.NOT_FOUND)
                    .json({ error: 'Not found' })
        }
        return res.json(apt)
      })
    }
  }))
我更改了
partment.find({price:200})
并使用
price:200
查询所有数据,但查询
postedBy
根本不起作用

当我转到我的mongo shell并执行查询时

db.apartments.find({ postedBy: 'the id of the account here' })
它返回适当的数据


我想出来了。它一直在我的模式中

let apartmentSchema = {
  name: { type: String, required: true },
  price: { type: Number, required: true },
  promotion: { type: String, required: true },
  postedOn: { type: Date, required: true },
  postedBy: {
    type: mongoose.Schema.Types.ObjectId, // this was the culprit
    required: true
  }
}

我只是把类型改成了字符串。我使用了我很久以前更新过的一个api中的ObjectId。谢谢你们的耐心,伙计们

我明白了。它一直在我的模式中

let apartmentSchema = {
  name: { type: String, required: true },
  price: { type: Number, required: true },
  promotion: { type: String, required: true },
  postedOn: { type: Date, required: true },
  postedBy: {
    type: mongoose.Schema.Types.ObjectId, // this was the culprit
    required: true
  }
}

我只是把类型改成了字符串。我使用了我很久以前更新过的一个api中的ObjectId。谢谢你们的耐心,伙计们

将console.log(请求参数房东id)添加到plant.find上方。输出是什么?如果这是您期望的id,请尝试从
plant.find中删除
postedBy:req.params.lown_id
({…
现在它应该从db返回所有内容。是吗?@Molda感谢您的即时回复。是的,它从我的db返回所有内容,但我只希望它返回特定于房东的数据。我该怎么做?只是想确保所有内容正常工作。您没有回答我的第一个问题tho,console.log的输出是什么(req.params.lown_id)放在plant.find上方?否则您的代码看起来正常我看不到任何问题输出是56e1ec5d4635a55403900d78。当我在mongo shell中使用此id时,我得到了我查询的内容。好的,您可能希望尝试将id强制转换为ObjectId,如:
postedBy:mongoose.Types.ObjectId(req.params.lown_id)
将console.log(req.params.lown_id)添加到plant.find上方。输出是什么?如果这是您期望的id,请尝试从
plant.find中删除
postedBy:req.params.lown_id
({…
现在它应该从db返回所有内容。是吗?@Molda感谢您的即时回复。是的,它从我的db返回所有内容,但我只希望它返回特定于房东的数据。我该怎么做?只是想确保所有内容正常工作。您没有回答我的第一个问题tho,console.log的输出是什么(req.params.lown_id)放在plant.find上方?否则您的代码看起来正常我看不到任何问题输出是56e1ec5d4635a55403900d78。当我在mongo shell中使用此id时,我得到了我查询的内容。好的,您可能希望尝试将id强制转换为ObjectId,如:
postedBy:mongoose.Types.ObjectId(req.params.lown_id)
Ok,它实际上也可以是字符串。但是您应该添加一个ref:
postedBy:{type:mongoose.Schema.Types.ObjectId,ref:'User'}
Ok,它实际上也可以是字符串。但是您应该添加一个ref:
postedBy:{type:mongoose.Schema.Types.ObjectId,ref:'User'}