规范化MongoDB,从文档中省略字段

时间:2020-05-12 15:47:14

标签: javascript mongodb

在MongoDB中创建新文档时,无法显示所有字段,当前以下内容的输出如下,它忽略了postTitle,postContent字段等。模式是否存在问题?文档不是很清楚。

enter image description here

我有一个非常简单的Mongo DB设置,如下所示:

const userSchema = new mongoose.Schema({

firstName: String,
lastName: String,
email: String,
hashPass: String,
userName: String,
isVerified: Boolean,

})

const postSchema = new mongoose.Schema({
    user: {type: mongoose.Schema.Types.ObjectId, ref:'User'},
    postDate: mongoose.Schema.Types.Date,
    postContent: String,
    postTitle: String,
    views: Number,
    likes: Number
})
const User = mongoose.model('User', userSchema)
const Post = mongoose.model('Post', userSchema)

然后我尝试这样创建一个帖子,并注入用户对象ID:

const createPost = async ( postContent, postTitle, user) => {
const post = await new PostsDb({
    user,
    postDate: Date.now(),
    postContent,
    postTitle,
    views: 0,
    likes: 0
})
await post.save()

} 


 createPost( 'bla bla', 'title of post', '5ebab7d3351253283ca610dc')

1 个答案:

答案 0 :(得分:0)

在发布方案中,您将用户shema再次添加到用户中。

const User = mongoose.model('User', userSchema)
const Post = mongoose.model('Post', userSchema)

对于用户模型是userSchema,对于后模型是PostSchema。

此外,我的建议是您将postTitle和postContent设置为必需,并避免创建空记录。

const userSchema = new mongoose.Schema({
    firstName: String,
    lastName: String,
    email: String,
    hashPass: String,
    userName: String,
    isVerified: Boolean,
})

const postSchema = new mongoose.Schema({
    user: {type: mongoose.Schema.Types.ObjectId, ref:'User'},
    postDate: mongoose.Schema.Types.Date,
    postContent: {
        type: String,
        required: true
        },
        postTitle: {
        type: String,
        required: true
        },
    views: Number,
    likes: Number
})
const User = mongoose.model('User', userSchema)
const Post = mongoose.model('Post', postSchema)

const post = new Post({
    user,
    postDate: Date.now(),
    postContent,
    postTitle,
    views: 0,
    likes: 0
})
await post.save()