我将解释我尝试使用此代码的情况
mongoose.connect('mongodb://localhost/postdb', {
useNewUrlParser: true,
useUnifiedTopology: true,
}).then(() => console.log('Successfully connect to MongoDB.'))
.catch((err) => console.error('Connection error', err));
async function createPost() {
try {
const jean = await User.create({
username : 'Jean', email: 'jtigana@aol.com',
});
const c1 = await Comment.create({postedBy : jean, body: 'Enfent terrible' });
await Post.create({title: 'Vou comer voce! ',
body: 'What a wonderful life!',
postedBy: jean,
comments: c1,
});
} catch (err) {
console.log(err);
}
}
createPost();
我的PostSchema
const PostSchema = new mongoose.Schema({
title: String,
body: String,
createdAt: {
type: Date,
default: Date.now,
},
postedBy: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User',
},
comments: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Comment',
}]
});
我希望有3个收藏集,想法是以后其他用户可以在同一帖子中添加评论。 MongoDB指南针
我从终端运行代码
node --trace-warnings --unhandled-rejections=strict index.js
try / catch块没有抱怨。为什么第三个收藏不见了?
答案 0 :(得分:0)
您已将postedBy和注释声明为ObjectId,但是您正在传递对象而不是ID。请执行以下操作:
await Post.create({title: 'Vou comer voce! ',
body: 'What a wonderful life!',
postedBy: jean.id,
comments: c1.id,
});
现在您要传递两个ID。
此外,您已将帖子声明为PostSchema,但随后尝试创建未声明的Post。您应该将Post.create重命名为PostSchema.create或将PostSchema重命名为Post。