提问者:小点点

Item.Filter不是函数


大家好,我正在制定一条获取登录用户创建的项目的路线,但是当我使用。filter函数时,我得到了一个错误。 我不知道为什么会出现这个错误。 在做同样的事情之前,我做过其他的应用程序,从来没有出现过错误

Item.Filter不是函数

my-items路由

const requireAuth = require("../middleware/requireAuth");
const express = require("express");
const mongoose = require("mongoose");
const Item = mongoose.model("Item");

router.get("/my-items", requireAuth, async (req, res) => {
  try {
    const items = Item.filter((item) => item.userId === req.user.userId);
    res.send(items);
  } catch (err) {
    console.log(err);
  }
});

项目架构

const mongoose = require("mongoose");

const itemSchema = new mongoose.Schema({
  userId: {
    type: mongoose.Schema.Types.ObjectId,
    ref: "User",
  },
  phone: {
    type: mongoose.Schema.Types.String,
    ref: "User",
  },
  email: {
    type: mongoose.Schema.Types.String,
    ref: "User",
  },
  seller: {
    type: mongoose.Schema.Types.String,
    ref: "User",
  },
  title: {
    type: String,
    required: true,
  },
  category: {
    type: String,
    required: true,
  },
  detail: {
    type: String,
    requiredL: true,
  },
  condition: {
    type: String,
    required: true,
  },
  price: {
    type: Number,
    required: true,
  },
});

mongoose.model("Item", itemSchema);

共2个答案

匿名用户

const items = await Item.find(({userId:req.user.userId}).lean();

它应该从db中返回您想要的确切项目,如果需要,您可以使用更多的查询。

匿名用户

item是一个模型,而不是数据库中的文档,您需要首先进行查询以获取项。

router.get("/my-items", requireAuth, async (req, res) => {
  try {
    const query = Item.find()
    query.exec().then(items => {
      const filteredItems = items.filter((item) => item.userId === req.user.userId);
      res.send(items);
    })
  } catch (err) {
    console.log(err);
  }
});