簡體   English   中英

Mongoose.model.find() 總是返回空數組

[英]Mongoose.model.find() always returns empty array

mongooseexpress庫的幫助下,我使用node.js構建了一個 web 應用程序后端服務器。 我的代碼使用express.Router().get()在路由“/”上列出,當收到“獲取請求”時,它使用mongoose.Z20F35E630D5394DBFA84C3.F6從 mongodb 集合中獲取數據

問題是,無論我嘗試了什么, mongoose.model.find()返回一個空數組...

這是 express.Router().get() 的代碼:

const express = require("express");
const router = express.Router();

const AttackPattern = require("../models/attack_pattern"); //the model

router.get("/", (req, res) => {
  AttackPattern.find({}, function (err, docs) {
    if (err) {
      console.log("error!"); //there was an error...
    } else {
      console.log(docs); //fetch succeful
      res.status(200).send(docs);
    }
  });
});

這是 model 的代碼:

const mongoose = require("mongoose");

const attackPatternSchema = mongoose.Schema({
  _id: String,
  name: String,
  description: String,
  x_mitre_platforms: [String],
  x_mitre_detection: String,
  phase_name: String,
});

module.exports = mongoose.model(
  "AttackPattern",
  attackPatternSchema,
  "attack_pattern"
);

我已經看過Model.find() 在 mongooseMongoose 中返回空,但總是返回一個空數組 NodeJS但沒有找到運氣......

重要信息:

  1. 集合的名稱是“attack_pattern”,匹配 mongoose.model() 的第三個參數。
  2. Schema 的字段名稱和類型與集合的字段名稱和類型的文檔相匹配。
  3. 與 mongodb 集群的連接成功(在另一個文件中建立)。
  4. 字段 _id 是字符串類型,而不是 ObjectId(文檔 _id 字段仍然具有唯一值,但不是自動生成的)。

幫助將不勝感激:)

在您的 model 中刪除參數 attack_pattern

module.exports = mongoose.model(
  "AttackPattern",
  attackPatternSchema
);

或者

當您創建 model 時,通過新模式更改 mongoose.model 並聲明_id屬性,如:

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

var attackPatternSchema = new Schema({
    _id: { type: Schema.ObjectId, auto: true },
    // others attributes
})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM