Mysql 当all方法未定义时,如何查询所有记录?
我试图搜索给定YouTube视频的评论,以查看它是否包含特定字符串 我使用的api调用工作正常。但是,我很挣扎,因为Mysql 当all方法未定义时,如何查询所有记录?,mysql,sql,ruby-on-rails,postgresql,youtube-api,Mysql,Sql,Ruby On Rails,Postgresql,Youtube Api,我试图搜索给定YouTube视频的评论,以查看它是否包含特定字符串 我使用的api调用工作正常。但是,我很挣扎,因为。所有的和某些SQL查询都无法工作,因为响应集合似乎是延迟加载的 问题——我如何查询CommentThreads集合以查看其中哪些项包含特定字符串,如“parts” 下面是我尝试运行的几个表达式的控制台输出,包括LIKE查询: @video_comments => #<Yt::Collections::CommentThreads:0x007fe626f70120>
。所有的和某些SQL查询都无法工作,因为响应集合似乎是延迟加载的
问题——我如何查询CommentThreads集合以查看其中哪些项包含特定字符串,如“parts”
下面是我尝试运行的几个表达式的控制台输出,包括LIKE查询:
@video_comments
=> #<Yt::Collections::CommentThreads:0x007fe626f70120>
@video_comments.all
=> NoMethodError: undefined method `all' for #<Yt::Collections::CommentThreads:0x007fe626f70120>
@video_comments.first.text_display
=> "Links for the parts in the description! <br /><br />What color do you want?"
@video_comments.first.text_display.include? "parts"
=> true
@video_comments.where('text_display LIKE ?', "%parts%").first
=> ArgumentError: wrong number of arguments (given 2, expected 0..1)
from /Users/macbook/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/yt-0.28.5/lib/yt/collections/base.rb:37:in `where'
@video\u评论
=> #
@视频点评
=>NoMethodError:未定义的方法“all”#
@视频\注释。第一。文本\显示
=>“说明中零件的链接
您想要什么颜色?”
@视频\注释。第一。文本\显示。包括?“部分”
=>正确
@视频注释。其中('文本显示类似?',“%parts%”)。首先
=>ArgumentError:参数数目错误(给定2,预期为0..1)
来自/Users/macbook/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0/gems/yt-0.28.5/lib/yt/collections/base.rb:37:在“where”中
Rails 5.0.1+ruby 2.3.0p0+psql(PostgreSQL)9.6.1
编辑:实际的@video\u注释
响应。所有
都适用于模型,例如,如果您有模型VideoComments,则VideoComments。所有
将返回所有注释。
您的上一个查询应该可以工作,您只是有一个语法错误,请重试
@video_comments.where('text_display iLIKE = ?', "%parts%").first
首先,@video\u comments本身不是活动记录。因此,您不能使用@video\u comments。所有
根据google的commentThreads,响应返回应该如下所示:
{
"kind": "youtube#commentThread",
"etag": etag,
"id": string,
"snippet": {
"channelId": string,
"videoId": string,
"topLevelComment": comments Resource,
"canReply": boolean,
"totalReplyCount": unsigned integer,
"isPublic": boolean
},
"replies": {
"comments": [
comments Resource
]
}
}
因此,您不必使用@video\u注释。您的所有命令应为:
@video_comments.replies.comments
(如果不成功,请尝试使用@video_comments[“repress”][“comments”]
)
它应该会返回一个评论列表
好的,下一步您将过滤注释列表,以获取包含“部分”单词的注释
@video_comments.replies.comments.select{|comment| comment.text_display.include? "parts"}
差不多吧
有关详细信息,请参阅以下链接:
我做了一些类似的事情,最后通过参考以下内容使其正常工作:
video_评论['items'][0]['snippet']['data']['textOriginal']
(这将返回实际注释。然后可以搜索该文本。)
如果没有单引号,或者在['items']
之后没有[0](没有引号),它将无法工作
Items
是一个包含数组和哈希嵌套的单个元素的数组。如果我尝试搜索整个Items
数组,它只返回其中嵌套哈希和数组的名称,而不返回其内容
我发现获得实际内容的唯一方法是直接引用我想要的元素(在本例中,['textOriginal']
中的注释文本您是否尝试过使用a
而不是all
?参数错误:参数数量错误(给定2,预期为0..1)
@Thanh\u Tuong这里看一下实际的回复:所以我尝试了你提到的所有方式来访问回复
。我也尝试了。items
[items]
或片段
等。但是他们都说未定义的方法。Hi@HashRocketSyntax,请尝试这种方式。instance\u variable\u get(“@#{items}@Thanh#Tuong谢谢你的帮助。名称错误:未定义的局部变量或方法{items}
能否请你删除{}并尝试使用这个:。实例{u变量{u get(@items”)@hashrocketsyntaxintesting@video\u comments。实例{u变量{u get(@items)
的结果是nil
。我对每种都取得了一些成功,但如果这种方法有效的话,可能会更加优雅