javascript - Mongoose : "Invalid schema configuration : ' model' is not a valid type within the array"

标签 javascript node.js mongodb mongoose

我第一次将 mongoose 用于 node.js 和 MongoDB。我尝试按照文档进行操作,但似乎我做错了什么。

我正在尝试在名为 Post 的集群(是数据库吗?)中创建三个集合(Tweet、评论和消息)。在这些模型之后是一堆 HTTP 方法,由于收到错误,我还没有尝试过。

错误是

Invalid schema configuration : 'model' is not a valid type within the array

它位于需要像这样的模型的行上:

const Commentaire = mongoose.model("Commentaire", commSchema)

我见过其他有同样错误的问题,但提供的修复不够普遍,因为这个错误一定很常见并且很容易得到。

这是我的代码:

const express = require("express");
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/Posts', {useNewUrlParser: true, useUnifiedTopology: true});

db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
    console.log("connecté à Mongoose")
});

Schema = mongoose.Schema
//Commentaires sous les tweets
const commSchema = new Schema();
commSchema.add({
    id_comm:{ //id unique qui permet de référer le comm
        type: Number,
        required: true,    
    },             
    login:{ //le login de la personne qui envoie le comm
        type: String,
        required: true, 
    },
    id_tweet:{ //l'id unique du tweet sous lequel le commentaire va
        type: Number,
        required: true,
    },
    comm:{ //commentaire en question, sous forme de chaîne de caractère
        type: String,
        required: true,
    },
    date:{ //date de l'envoie du message
        type: String,
        required: true,
    }                   
})
const Commentaire = mongoose.model("Commentaire", commSchema)
//Tweets
const tweetSchema = Schema();
tweetSchema.add({
    id_tweet:{ //id unique qui permet de référer le message
        type: Number,
        required: true,    
    },             
    user_id:{ //le login de la personne qui envoie le message
        type: String,
        required: true, 
    },
    tweet:{ //tweet en question, sous forme de chaîne de caractère
        type: String,
        required: true,
    },
    titre:{ //titre du tweet, sous forme de chaîne de caractère
        type: String,
        required: true,
    },
    date:{ //date de l'envoie du message
        type: String,
        required: true,
    },
    comms: { type: [Commentaire] }                
})
const Tweet = mongoose.model("Tweet", tweetSchema)
//Messages privés
const messageSchema = new mongoose.Schema({
    id_mess:{ //id unique qui permet de référer le message
        type: Number,
        required: true,    
    },             
    sender_id:{ //l'id de la personne qui envoie le message
        type: Number,
        required: true, 
    },
    ami_id:{ //l'id' de la personne qui reçoit le message
        type: Number,
        required: true,
    },
    message:{ //message en question, sous forme de chaîne de caractère
        type: String,
        required: true,
    },
    date:{ //date de l'envoie du message
        type: String,
        required: true,
    }                   
})
const Message = mongoose.model("Message", messageSchema)

对于法语评论,我深表歉意,我不是以英语为母语的人,这让我更难理解文档。这些评论的存在只是为了提醒自己哪个值代表什么,所以请忽略它。

感谢您的宝贵时间。祝你有美好的一天。

最佳答案

@Someone Special 的回答很接近,但您需要传入架构,而不是模型。

改变

comms: [Commentaries]

comms: [commSchema]

关于javascript - Mongoose : "Invalid schema configuration : ' model' is not a valid type within the array",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67329210/

相关文章:

javascript - jquery/jscript 防止打开多个弹出窗口

javascript - 如何将字符串形式的十六进制字节流转换为javascript中的实际字节流?

node.js - 如何流式传输 API 响应而不是将其全部加载到 RAM 中

mongodb - MongoDB 的 SAN SSL 证书

javascript - onmouseout 和 onmouseover

javascript - Firebase 的云函数 : How to access an array I have just got from firebase?

node.js - 将 https 代理配置为仅允许 TLS1.2 用于传出请求

php - 每天存储数百万条记录并可出于统计目的进行分组的数据的最佳方法是什么?

node.js - nodejs安装时蓝屏

java - MongoDB 的reduce-phase 没有按预期工作