当前位置: 首页 > 面试题库 >

如何防止在分析时重复输入?

高山
2023-03-14
问题内容

我正在尝试保存要分析的歌曲信息,但是如果该歌曲已经存在于分析中,我希望我的代码什么也不做。

我在下面尝试过此代码:

var Music = PFObject(className:"Musics")
        var query = PFQuery(className:"Musics")
        query.findObjectsInBackgroundWithBlock {
            (objects: [AnyObject]?, error: NSError?) -> Void in

            if error == nil {
                // The find succeeded.
                println("Successfully retrieved \(objects!.count) scores.")
                // Do something with the found objects
                if let objects = objects as? [PFObject] {
                    for object in objects {


                        var songTitle = object.objectForKey("songTitle") as? String

                        if songTitle != title {

                            Music["createdBy"] = PFUser.currentUser()
                            Music["songTitle"] = title
                            Music["albumCover"] = imageFile
                            Music["songArtist"] = artist
                            Music.saveInBackgroundWithBlock {

                                (success: Bool, error: NSError?) -> Void in
                                if (success) {

                                    println("succeed")

                                } else {
                                    // There was a problem, check error.description
                                    println("error jeh")
                                }
                            }

                        }else{

                            println("song already exist")

                        }

                    }
                }
            } else {
                // Log details of the failure
                println("Error: \(error!) \(error!.userInfo!)")
            }
        }

上面的代码在日志中给出以下结果:

成功取得4分。歌曲已存在成功检索到4个乐谱。歌曲已存在成功检索到4个乐谱。歌曲已存在成功检索到4个乐谱。歌曲已存在成功成功成功成功成功成功成功成功成功成功成功成功

为什么我的for循环比Objects.count循环更多?以及如何防止解析中出现重复项?

给我任何建议,在obj c或swift中都没关系


问题答案:

我建议在Parse Cloud代码上实现一个简单的beforeSave触发器,以检查新的输入歌曲是否已经存在(基本上,您将使一个或多个字段唯一。例如:

Parse.Cloud.beforeSave("Musics", function(request, response) {

  var newEntrySong = request.object;

  var querySongs = new Parse.Query("Musics");
  querySongs.equalTo("title", newEntrySong.get("title"));
  querySongs.equalTo("description", newEntrySong.get("description"));

  // this could be a sort of signature for your song, to make more unique (skipping spaces and new lines for example)
  querySongs.equalTo("md5Title", newEntrySong.get("md5Title"));
  querySongs.first({
    success: function(temp) {
        response.error({errorCode:123,errorMsg:"Song already exist!"});          
    },
    error: function(error) {
      response.success();
    }
  });
});

希望能帮助到你。



 类似资料:
  • 问题内容: 我想防止使用vb.net和MySQL作为数据库的清单表单中出现重复条目​​,这是我的代码: 结束子 我在搜索答案时发现了这个问题,但是当我尝试运行它时,它没有读取插入命令,而是即使没有相同的人员ID也会直接转到msbox“人员ID已经存在”。 有人可以检查为什么不阅读插入内容, 我的数据库表值: pcode =主键 lname =长文本 fname =长文本 办公室=长文本 名称=长文

  • 这是我的用户注册数据库的方式,但我的问题是:如何防止数据库具有相同用户名的副本,或者换句话说,如果用户名存在于数据库。

  • 问题内容: 我想提出一种标准做法,以防止任何表在重要的地方重复。在大多数情况下,重复项是变量的组合而不是一个。我的主键只是每个字段的唯一ID,因此我无法使用它们。我一直在做的是先查询表,然后查询所要组合的行数是否为0,然后进行插入。但是,我已经读过,应该有可能在多个字段上设置唯一键以强制唯一性。INSERT IGNORE听起来很可能,但是,我需要在多个列上忽略它。 例如,对于字段关注者和关注对象,

  • 我想知道如何防止这种情况发生? 问题是,创建对象剥离类装饰器,构造函数逻辑等的对象。如何明确防止此行为? 当涉及到像这样的对象时,还有另一个反序列化问题。有时,我有这样的课程: 像这样的类必须通过<code>JSON反序列化。解析(“一些字符串”)但反序列化后,它们也会作为“从头开始的对象”出现。所以,任何装饰器都不存在了,任何构造器逻辑都不存在,元也不存在了。例如。

  • 在我的项目中,我有两页,第一页用于输入数据,第二页用于向用户显示数据。刷新结果页时,数据将被复制。我试图解决这个问题,但我不熟悉PRG模式。如果用户刷新结果页,我希望防止重复。

  • 问题内容: 我想创建一个表来存储设备设置。该表具有三行:id,parameter_name和parameter_value。 该表是通过执行以下查询语句创建的: 然后通过执行以下方法存储行: 创建数据库后,将存储默认值: 但是,方法insertRow()的问题在于它无法防止重复输入。 有谁知道在这种情况下如何防止重复输入? 问题答案: 您可以使用列约束。 UNIQUE约束导致在指定列上创建唯一索引