0

私は mongoDB (sails-mongo アダプター) で Waterline を使用する Node.js Sails アプリ 0.10-rc4 を使用しており、うまく機能する model.where 基準条件があります。

                or:
                [
                    {
                        start: 
                        {
                            '>': new Date(parseInt(req.param('start'))*1000),
                            '<': new Date(parseInt(req.param('end'))*1000)
                        },
                        end: 
                        {
                            '>': new Date(parseInt(req.param('start'))*1000),
                            '<': new Date(parseInt(req.param('end'))*1000)
                        }
                    }
                ]

...しかし、私はそれに例外を追加したかったのです。そのようなアルゴの何か:

      (
          (startq > startparam AND startq < endparam)
           OR
          (endq > startparam AND endq < endparam)
      )
       OR
      (
          (startq < startparam AND endq > endparam)            
      )

...しかし、複数の OR を使用することはできないようです ?

                or:
                [
                    {
                        start: 
                        {
                            '>': new Date(parseInt(req.param('start'))*1000),
                            '<': new Date(parseInt(req.param('end'))*1000)
                        },
                        end: 
                        {
                            '>': new Date(parseInt(req.param('start'))*1000),
                            '<': new Date(parseInt(req.param('end'))*1000)
                        },
                        {
                            start: 
                            {
                                '<': new Date(parseInt(req.param('start'))*1000)
                            },
                            end: 
                            {
                                '>': new Date(parseInt(req.param('end'))*1000)
                            }
                        }

                    }
                ]

私は多くの方法を試しました(ブラケットなしで)...

                or:
                [
                    {
                        {
                            or:
                            [
                                {
                                    start: 
                                    {
                                        '>': new Date(parseInt(req.param('start'))*1000),
                                        '<': new Date(parseInt(req.param('end'))*1000)
                                    },
                                    end: 
                                    {
                                        '>': new Date(parseInt(req.param('start'))*1000),
                                        '<': new Date(parseInt(req.param('end'))*1000)
                                    }
                                }
                            ]
                        },
                        {
                                start: 
                                {
                                    '<': new Date(parseInt(req.param('start'))*1000)
                                },
                                end: 
                                {
                                    '>': new Date(parseInt(req.param('end'))*1000)
                                }
                        }
                    }
                ]

... 誰も働いていませんでした。

     SyntaxError: Unexpected token {

ドキュメントにはその構文の例がありません。それを行う方法はありますか?

編集:

スコットへの感謝、ここに良い構文があります:

                or:
                [
                    {
                        start: 
                        {
                            '>': new Date(parseInt(req.param('start'))*1000),
                            '<': new Date(parseInt(req.param('end'))*1000)
                        }
                    },
                    {
                        end: 
                        {
                            '>': new Date(parseInt(req.param('start'))*1000),
                            '<': new Date(parseInt(req.param('end'))*1000)
                        }
                    },
                    {
                        start: 
                        {
                            '<': new Date(parseInt(req.param('start'))*1000)
                        },
                        end: 
                        {
                            '>': new Date(parseInt(req.param('end'))*1000)
                        }
                    }
                ]
4

1 に答える 1

1

2 番目の 2 つの例はどちらも有効な JSON ではありません。これは、キーのないネストされたオブジェクトが含まれているためです。そのため、構文エラーが発生しています。

キーは、 (or有効な JSON オブジェクトの形式で) 句の配列を取り、一緒に "or" します。試す:

            or:
            [
                {
                    start: 
                    {
                        '>': new Date(parseInt(req.param('start'))*1000),
                        '<': new Date(parseInt(req.param('end'))*1000)
                    },
                    end: 
                    {
                        '>': new Date(parseInt(req.param('start'))*1000),
                        '<': new Date(parseInt(req.param('end'))*1000)
                    }
                },
                {
                    start: 
                    {
                        '<': new Date(parseInt(req.param('start'))*1000)
                    },
                    end: 
                    {
                        '>': new Date(parseInt(req.param('end'))*1000)
                    }
                }
            ]

配列にオブジェクトを 1 つだけ入れているため、元の (動作する) 例は実際には「OR」を実行していないことに注意してください。

于 2014-03-19T18:28:59.187 に答える