首页 > 解决方案 > Item.filter 不是函数

问题描述

大家好,我正在制定路线以获取由登录用户创建的项目,但是当我使用 .filter 函数时出现错误。不知道为什么我会收到这个错误。在做同样的事情之前我已经制作了其他应用程序并且从未出错

Item.filter 不是函数

我的物品路线

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);

标签: javascriptnode.js

解决方案


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);
  }
});

推荐阅读