我有史以来第一次将mongoose用于node.js和MongoDB。我试着遵循文档,但似乎我做得不对。
我正试图在一个名为Post的集群(这是一个数据库吗?(中创建三个集合(Tweet、Comments和Messages(。下面的模型是一堆HTTP方法,由于我收到的错误,我还没有尝试这些方法。
错误为
无效的架构配置:"model"不是数组中的有效类型
它位于调用以下模型的行上:
const Commentaire=mongose.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的答案很接近,但您需要传入Schema,而不是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
})