簡體   English   中英

Mongoose:“無效的架構配置:‘模型’不是數組中的有效類型”

[英]Mongoose : "Invalid schema configuration : 'model' is not a valid type within the array"

我第一次將 mongoose 用於 node.js 和 MongoDB。 我已經嘗試按照文檔進行操作,但似乎我做錯了什么。

我正在嘗試在名為 Post 的集群(這是數據庫嗎?)中創建三個 collections(推文、評論和消息)。 在這些模型之后是一堆 HTTP 方法,由於收到的錯誤,我還沒有嘗試過。

錯誤是

無效的架構配置:“模型”不是數組中的有效類型

它位於需要 model 的行上,例如:

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 的答案很接近,但您需要傳入架構,而不是 Model。

改變

comms: [Commentaries]

comms: [commSchema]

我假設您正在嘗試創建子文檔類型,您可以更改下面注釋的行嗎?

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

暫無
暫無

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

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