我试图建立一个论坛,以了解平均堆栈。我在使用猫鼬时遇到了一个问题。。。
我有这个...
var UserSchema = new Schema({
id: ObjectId,
firstName: String,
lastName: String,
role: String,
email: {
type: String,
unique: true
},
password: String,
workers: [WorkerSchema]
});
var TopicSchema = new Schema({
id: ObjectId,
title: String,
moderator: UserSchema,
posts: [PostSchema]
});
var Topic = mongoose.model('Topic', TopicSchema);
app.post('/topics', requireLogin, function(req, res) {
User.findOne({"email": req.session.user.email}, function(err, user) {
if (user.role == "moderator" || user.role == "admin") {
var topic = new Topic({
title: req.body.title,
moderator: req.session.user,
posts: []
});
topic.save(function(err) {
if (err) console.log(err);
res.status(204).end();
});
}
});
});
我的问题是...当我将主题发布到 /topics时,它第一次工作,用一个项目填充主题集合。但是,当我再次从同一个用户发布到 /topics时,我得到了一个E11000 MongoError,如下所示:消息:“E11000重复键错误索引:MY_MONGO_DB。主题。$moderator.email_1dup键: {: " myuser@example.com”}”
我知道从用户模式的电子邮件字段中删除“唯一:真实”属性可以解决这个问题,但是我不想删除这个唯一属性,因为我在代码的其他地方使用它来确保用户通过电子邮件是唯一的。
有没有办法绕过这个?换句话说,有没有办法保持“唯一:真实”的属性,同时保留用户在不触发E11000错误的情况下发布多个主题的能力?
您所做的是嵌入用户。在数据库中,生成的文档类似于
{
...
moderator: {..., email: "john@example.com"}
}
当然,如果你让同一个人做两次主持人,这将违反唯一的约束。
您应该做的是在模式中引用用户:
var user = mongoose.model('User', UserSchema);
var TopicSchema = new Schema({
id: ObjectId,
title: String,
moderator: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
posts: [PostSchema]
});
问题内容: 我刚刚在android应用程序中编写了一个函数,该函数使用Java中的标准“文件”类删除文件。即: 尽管上面的过程很简单,但我一直想知道通过“ ContentResolver”执行该操作是否有任何好处。任何意见,将不胜感激。 干杯, 杰瑞德 ------------------------------------------编辑------- 这是通过Content Resolver删
问题内容: 我有一个浮点数的大数据集。我遍历它们并为它们中的每一个进行评估。我懂了 我想解决这个问题,如果发生此错误,则返回0。 我正在考虑定义一个新功能: 基本上,我需要一种测试输出是否正确的方法,但我不知道如何进行。感谢您的帮助! 问题答案: 由于for为负无穷大,因此我只需要检查输入值是否为零并返回您想要的值即可: 编辑 :小编辑:您应该检查所有小于或等于0的值。 编辑2 :当然是在nump
如何在不删除索引映射的情况下从elasticsearch数据库中删除数据? 我是Tire gem,使用删除命令删除我所有的映射并再次运行创建命令。我想避免创建命令一次又一次地运行。 请帮我解决这个问题。
请注意,在转向您之前,我已经浏览了各种帖子。事实上,我尝试实现中提供的解决方案:基于“notin”条件从数据帧中删除行 我的问题如下。让我们假设我有一个巨大的数据帧,我想删除重复的数据帧。我很清楚我可以使用drop_duplicates,因为这是最快的最简单的方法。然而,我们的老师希望我们创建一个包含重复项ID的列表,然后根据这些值是否包含在上述列表中删除它们。 现在,让我们看看输出: 因此,我得
问题内容: 比方说: 对此: 我一直在寻找使用Mootools,jQuery甚至是(原始)JavaScript的方法,但是却不知道该怎么做。 问题答案: 使用jQuery,您可以执行以下操作: 快速链接到文档: 内容(): jQuery replaceWith( 内容 :[ 字符串 | 元素 | jQuery ]): jQuery
问题内容: 我遇到了一个问题。我不知道如何在不将后记留空的情况下删除行。 我正在使用Apache-POI 3.9,使用下一个代码时出现错误: 更新版本: 我找到了解决方案:但是由于每个删除行都减少了lastRowNum,所以我得到了空指针。 这是新版本: 最后更新: ManishChristian帮助我解决了这个问题! 问题答案: 试试下面的代码,它应该可以工作: 每次删除一行都需要减少一。并再次