如何使用重复键创建JSON对象

时间:2015-04-27 20:55:42

标签: javascript node.js sails.js waterline

我正在开发一个SailsJS项目,我需要为我的ORM搜索创建一个json对象才能工作,这就是搜索的执行方式

SELECT
    p.id,
    p.name,
    count(m1.*) + count(m2.*) as matches,
    count(w.*) as wins
FROM players p
LEFT JOIN matches m1
ON m.p_one_id = p.id
LEFT JOIN matches m2
on m.p_two_id = p.id
LEFT JOIN wins w
ON w.p_id = p.id
GROUP BY p.id, p.name

因此,您可能会看到Find()中的JSON对象是需要创建的,并且里面的值具有重复的键。

2 个答案:

答案 0 :(得分:2)

你做不到。你应该尝试使用这样的东西:

Venue.find({
            is_published: true,
            restaurant_services: {
                contains:  ['"delivery":"1"','"takeout":"1"']
            },
            restaurant_specialties: {
                contains: [ '"breakfast":"1"' ]
            }
        }).exec

或者这个:

Venue.find({
            is_published: true,
            restaurant_services: {
                contains: {"delivery":"1","takeout":"1"}
            },
            restaurant_specialties: {
                contains: { "breakfast":"1" }
            }
        }).exec

答案 1 :(得分:1)

问题是{...} Jason代表地图,因此不能有重复的密钥。虽然重复键严格来说不是语法错误,但它们也无法像浏览器或json库那样按预期工作。如果你不能改变你的json对象的语法,那么你将不得不通过字符串连接而不是普通的Javascript类型方法来生成json。