gpt4 book ai didi

javascript - 防止插入重复元素 - 而不是路由到现有元素

转载 作者:行者123 更新时间:2023-11-28 07:01:40 26 4
gpt4 key购买 nike

这就是我通过输入字段向列表(包含文章链接)添加一些元素的方式:

Template.addForm.events({
'submit form': function(event){
event.preventDefault();
var title = event.target.text.value;
MongoValues.insert({
title: title,
slug: title.toLowerCase()
}, function(error, result) { if(error) console.warn(error); });
event.target.text.value = "";
}
});

现在我想防止重复输入:如果用户想要添加一个已经存在的标题,他应该被路由到这个已经存在的元素(路由到 article/_id),而不是添加标题到列表中。

最佳答案

假设您正在使用iron:router并且有这样的路线:

Router.route('article/:_id', {
name: 'article'
// other route stuff
});

您可以按如下方式调整代码:

Template.addForm.events({
'submit form': function(event){
event.preventDefault();
var title = event.target.text.value;
var existing = MongoValues.findOne({title : title});
if (!!existing) {
// title already exists, go to article page
Router.go("article", {_id : existing._id});
} else {
// title doesnt exist, so go ahead and insert
MongoValues.insert({
title: title,
slug: title.toLowerCase()
}, function(error, result) {
if(error) {
console.warn(error);
}
});
event.target.text.value = "";
}
}
});

请注意,如果用户绕过此代码(即通过从控制台执行插入),这不会阻止重复。

如果您使用 Collection2 和 SimpleSchema,则可以在标题字段上设置唯一约束,以确保仅插入唯一值,无论插入发生在何处。为此,只需在字段定义中指定“unique: true”,如下所示:

title : {
type: String,
unique: true
}

关于javascript - 防止插入重复元素 - 而不是路由到现有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32085022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com