想要查找某个json列包含空对象的所有行,{}
.这可以使用JSON数组,或者如果我在对象中查找特定键.但我只是想知道对象是否为空.似乎找不到会这样做的运营商.
dev=# \d test
Table "public.test"
Column | Type | Modifiers
--------+------+-----------
foo | json |
dev=# select * from test;
foo
---------
{"a":1}
{"b":1}
{}
(3 rows)
dev=# select * from test where foo != '{}';
ERROR: operator does not exist: json <> unknown
LINE 1: select * from test where foo != '{}';
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
dev=# select * from …
Run Code Online (Sandbox Code Playgroud) Go to Go.遇到这个错误,没有找到原因或理由:
如果我创建一个结构,我显然可以分配和重新分配值没有问题:
type Person struct {
name string
age int
}
func main() {
x := Person{"Andy Capp", 98}
x.age = 99
fmt.Printf("age: %d\n", x.age)
}
Run Code Online (Sandbox Code Playgroud)
但如果结构是地图中的一个值:
type Person struct {
name string
age int
}
type People map[string]Person
func main() {
p := make(People)
p["HM"] = Person{"Hank McNamara", 39}
p["HM"].age = p["HM"].age + 1
fmt.Printf("age: %d\n", p["HM"].age)
}
Run Code Online (Sandbox Code Playgroud)
我得到cannot assign to p["HM"].age
.就是这样,没有其他信息.http://play.golang.org/p/VRlSItd4eP
我找到了解决这个问题的方法 - incrementAge
在Person上创建一个func,可以调用它,并将结果分配给map键,例如p["HM"] = p["HM"].incrementAge()
.
但是,我的问题是,这个"无法分配"错误的原因是什么,为什么不允许我直接分配结构值?
我在页面上有一个Select2元素,通过ajax加载结果.希望能与水豚/ rspec的测试这个(使用捉弄人的鬼司机),但是由于选择二元素实际上开始作为一个隐藏字段,然后填充一个<ul>
一旦结果进行处理,没有一个正常的select
,fill_in
或者choose
助手会工作.
我现在拥有的是什么
it "should have a search field for events" do
click_link "Select an Event" # this works as expected
within('.select2-container') do # works
find('.select2-search input').set(event.description[0,5]) # won't work!
find(:xpath, "li[text()='#{event.description}']").click
end
click_button "Search"
page.should have_content("Displaying all 2 photos")
end
Run Code Online (Sandbox Code Playgroud)
上面的第4行,显然capybara可以找到元素,但值不会改变,Select2永远不会进行ajax调用.(不能fill_in
在那里使用普通因为搜索字段元素没有label,id或name属性)
所以我有一些帖子,想展现ñ .. 中号在侧边栏最新的条目(这些数字在配置设定)
我可以轻松地获得最新的n条记录
class Post < ActiveRecord::Base
default_scope :order => "created_at DESC"
scope :published, lambda { where("blog_entries.created_at <= ?", Time.zone.now) }
scope :latest, lambda { |n| published.limit(n) }
end
@posts = Post.latest(6)
Run Code Online (Sandbox Code Playgroud)
但我想要的是
@posts = Post.published.limit(6, 12)
Run Code Online (Sandbox Code Playgroud)
但是这给了wrong number of arguments
,AR中有什么方法吗?现在我正在玩will_paginate
,但看起来很难用它.
我正在尝试使用.draggable()
通过Meteor订阅填充的jQuery UI创建一组可拖动的DOM对象.我提出的代码看起来像
Meteor.subscribe('those_absent', function() {
$( "li.ui-draggable" ).draggable( { revert: "invalid" } );
});
Meteor.subscribe('those_present', function() {
$( "li.ui-draggable" ).draggable( { revert: "invalid" } );
});
Run Code Online (Sandbox Code Playgroud)
这些与一些Meteor.publish()
调用相对应,因此只要集合发生更改,.draggable()
就会附加行为.至少,这是我的意图.
然而,它只能工作一次 - 一旦其中一个<li>
被拖放,那么它们就不再是可拖动的了.
当对象被删除时,我正在触发附加到Template
项目的自定义事件,就像这样
$( "#c_absent .inner-drop" ).droppable({
drop: function( event, ui ) {
ui.draggable.trigger('inout.leave');
}
});
Template.loftie_detail.events = {
'inout.leave': function (e) {
Lofties.update({_id:this._id}, {$set: {present: 'N' }});
}
};
Run Code Online (Sandbox Code Playgroud)
因此,我的想法是对drop上的集合的这种更改应该通过pub/sub进程传播并重新运行.draggable()
上面的行.但它似乎没有.
完整的代码可以在这里看到https://github.com/sbeam/in-out/blob/master/client/inout.js,该应用程序现在在http://inout.meteor.com/(那里是一些其他可能无关的问题,项目随机丢失值或完全从UI中消失)
因此,如果我对Meteor中pub/sub的工作原理有所了解,那么最好知道.或者是否有更有效的方法来实现这种无需行为的UI行为绑定?
我正在尝试建立一个Sphinx索引,其中包含艺术作品和流派之间基本的多对多关系:
artworks
---------------
id
title
description
genres
---------------
id
name
artwork_genres
---------------
artworks_id
genres_id
Run Code Online (Sandbox Code Playgroud)
在我的sphinx配置文件中,我有类似的东西
source src_artwork {
...
sql_query = SELECT id, title, description FROM artworks
sql_attr_multi = uint tag from query; SELECT id,name FROM genres
}
Run Code Online (Sandbox Code Playgroud)
据我所知,这是关于多值属性和sql_attr_multi的文档
但显然没有提到那里的领带表,我无法理解它是如何进入配置的.我只是喜欢搜索"印象派"来制作属于该类型的艺术作品(如果在其他领域中看到该术语,则适当加权)
我是一个蟒蛇菜鸟.已经安装了virtualenv和pip,一切看起来都不错,但是当尝试导入通过pip安装的软件包时,python找不到它们.我在OS X上并且已经安装了系统python 2.6 /usr/bin
,因此/usr/local/bin
通过软件包安装程序安装了2.7 .在安装pip和virtualenv时,我确保通过将PATH设置为/usr/local/bin
第一个来使用2.7 python .
(pysite)sbeam@pris ~/Sites]$ pip freeze
Django==1.4
Markdown==2.1.1
psycopg2==2.4.5
wsgiref==0.1.2
(pysite)sbeam@pris ~/Sites]$ echo $PYTHONPATH
(pysite)sbeam@pris ~/Sites]$ which python
/Users/sbeam/.virtualenvs/pysite/bin/python
(pysite)sbeam@pris ~/Sites]$ env | grep VIRTUAL
VIRTUALENVWRAPPER_PROJECT_FILENAME=.project
VIRTUAL_ENV=/Users/sbeam/.virtualenvs/pysite
VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python
VIRTUALENVWRAPPER_HOOK_DIR=/Users/sbeam/.virtualenvs
VIRTUALENVWRAPPER_LOG_DIR=/Users/sbeam/.virtualenvs
(pysite)sbeam@pris ~/Sites]$ python
Python 2.7.3 (v2.7.3:70274d53c1dd, Apr 9 2012, 20:52:43)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> from pprint import pprint as pp
>>> …
Run Code Online (Sandbox Code Playgroud) 鉴于mongoose(或sequelize,或redis)查询的异步性质,当你在渲染视图之前需要进行多次查询时,你会怎么做?
例如,您user_id
在会话中有一个,并希望通过以下方式检索有关该特定用户的一些信息findOne
.但您还希望显示最近登录用户的列表.
exports.index = function (req, res) {
var current_user = null
Player.find({last_logged_in : today()}).exec(function(err, players) {
if (err) return res.render('500');
if (req.session.user_id) {
Player.findOne({_id : req.session.user_id}).exec(function(err, player) {
if (err) return;
if (player) {
current_user = player
}
})
}
// here, current_user isn't populated until the callback fires
res.render('game/index', { title: 'Battle!',
players: players,
game_is_full: (players.length >= 6),
current_user: current_user
});
});
};
Run Code Online (Sandbox Code Playgroud)
所以res.render
在第一个查询回调中,很好.但是等待响应findOne
来看看我们是否了解这个用户呢?它只是有条件地调用,所以我不能放入render
内部回调,除非我为任何一个条件复制它.不漂亮.
我可以想到一些解决方法 -
使它真的 …
说我有文字如
CREATE TABLE blah blah (
`id` int not null,
`xxxxxx` varchar(255),
PRIMARY KEY (`id`) )
Run Code Online (Sandbox Code Playgroud)
并且光标位于"xxxxxx" - 我可以做什么来快速跳转到开头"(" - 或关闭那个问题.我可以使用"F",但只能在行内找到.