Javascript 猫鼬:“;架构配置无效:';型号';不是数组中的有效类型;

Javascript 猫鼬:“;架构配置无效:';型号';不是数组中的有效类型;,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我第一次将mongoose用于node.js和MongoDB。我试着按照文档进行操作,但似乎我做错了什么 我试图在一个名为Post的集群(是一个数据库吗?)中创建三个集合(Tweet、评论和消息)。遵循这些模型的是一系列HTTP方法,由于收到错误,我还没有尝试这些方法 错误是 架构配置无效:“模型”不是数组中的有效类型 它位于需要以下模型的线路上: const Commentaire=mongoose.model(“Commentaire”,commSchema) 我见过其他问题也有同样的错误,

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

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

错误是

架构配置无效:“模型”不是数组中的有效类型

它位于需要以下模型的线路上:

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)
我为法语的评论道歉,我不是以英语为母语的人,这使得我理解文档有点困难。这些评论的存在只是为了提醒自己哪个值代表什么,所以请忽略它


谢谢你抽出时间。祝您愉快。

我假设您正在尝试创建子文档类型,您可以更改下面注释的行吗

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] } //<-- try this line                 
})
tweetSchema.add({
id_tweet:{//id唯一的消息
类型:数字,
要求:正确,
},             
用户id:{//le登录个人信息
类型:字符串,
要求:正确,
},
推特:{//tweet en question,sous forme de chaîne de caractère
类型:字符串,
要求:正确,
},
标题:{//titre du tweet,sous forme de chaîne de caractère
类型:字符串,
要求:正确,
},
日期:{//date de l'envoie du message
类型:字符串,
要求:正确,
},

comms:{type:[Commentaire]}/由@Someone Special给出的答案很接近,但是您需要传入模式,而不是模型

改变

comms: [Commentaries]


谢谢你的回答。我已经更正了,但是我仍然在“tweetSchema.add”(“line.other error is
const tweetSchema=Schema()上得到了相同的错误;
,你忘了在SchemaInActe之前添加
新的
单词!谢谢!谢谢!它现在正在工作!我很难理解Schema和模型之间的区别,这就是我所缺少的。谢谢你的时间。把Schema想象成数据存储方式的描述,把模型想象成实际的c存储数据的容器。祝您在编码过程中好运!
comms: [commSchema]