Sails.js 水线中的使用和维护

Sails.js 水线中的使用和维护,sails.js,waterline,Sails.js,Waterline,这是我使用水线的查询 var queryObject = { where: { or: [ {firstName: {'contains': search}}, {lastName: {'contains': search}}, {email: {'contains': search}}, ], and: [ {aut

这是我使用水线的查询

   var queryObject = {
        where: {
          or: [
            {firstName: {'contains': search}},
            {lastName: {'contains': search}},
            {email: {'contains': search}},

          ],
          and: [
            {authType:'google'},
            {dealershipcompany: 11}
          ]
        }
      }
但添加“and”会返回一个错误:

error: Sending 500 ("Server Error") response:
 Error (E_UNKNOWN) :: Encountered an unexpected error
: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[object Object],[object Object])' at line 1
    at Query.Sequence._packetToError (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:48:14)
    at Query.ErrorPacket (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Query.js:83:18)
    at Protocol._parsePacket (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:274:23)
    at Parser.write (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:77:12)
    at Protocol.write (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:39:16)
    at Socket.<anonymous> (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:96:28)
    at Socket.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:765:14)
    at Socket.emit (events.js:92:17)
    at emitReadable_ (_stream_readable.js:427:10)
    at emitReadable (_stream_readable.js:423:5)
    at readableAddChunk (_stream_readable.js:166:9)
    at Socket.Readable.push (_stream_readable.js:128:10)
    at TCP.onread (net.js:529:21)
    --------------------
    at Protocol._enqueue (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:135:48)
    at PoolConnection.query (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:201:25)
    at Array.async.auto.processParent [as 0] (/vagrant/sharpOne_app/node_modules/sails-mysql/lib/adapter.js:586:24)
    at /vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/async/lib/async.js:574:38
    at _arrayEach (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/async/lib/async.js:78:13)
    at Object.async.auto (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/async/lib/async.js:536:9)

    at Cursor.populateBuffers [as $populateBuffers] (/vagrant/sharpOne_app/node_modules/sails-mysql/lib/adapter.js:581:19)
    at Cursor.run (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/waterline-cursor/cursor/cursor.js:45:8)
    at runJoins (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/waterline-cursor/index.js:51:10)
    at __JOIN__ (/vagrant/sharpOne_app/node_modules/sails-mysql/lib/adapter.js:514:9)
    at afterwards (/vagrant/sharpOne_app/node_modules/sails-mysql/lib/connections/spawn.js:84:5)
    at /vagrant/sharpOne_app/node_modules/sails-mysql/lib/connections/spawn.js:40:7
    at Ping.onOperationComplete [as _callback] (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/Pool.js:99:5)
    at Ping.Sequence.end (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
    at Ping.Sequence.OkPacket (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:105:8)
    at Protocol._parsePacket (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:274:23)
    at Parser.write (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Parser.js:77:12)
    at Protocol.write (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/protocol/Protocol.js:39:16)
    at Socket.<anonymous> (/vagrant/sharpOne_app/node_modules/sails-mysql/node_modules/mysql/lib/Connection.js:96:28)
    at Socket.emit (events.js:95:17)
    at Socket.<anonymous> (_stream_readable.js:765:14)
    at Socket.emit (events.js:92:17)

Details:  Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[object Object],[object Object])' at line 1
错误:发送500(“服务器错误”)响应:
错误(E_未知)::遇到意外错误
:ER_PARSE_ERROR:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“[object object]、[object object])附近使用的正确语法
在Query.Sequence.\u packetToError(/vagrant/sharpOne\u app/node\u modules/sails mysql/node\u modules/mysql/lib/protocol/sequences/Sequence.js:48:14)
在Query.ErrorPacket(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/protocol/sequences/Query.js:83:18)
at Protocol._parsePacket(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Protocol/Protocol.js:274:23)
在Parser.write(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/protocol/Parser.js:77:12)
在Protocol.write(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Protocol/Protocol.js:39:16)
在插座上。(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Connection.js:96:28)
在Socket.emit(events.js:95:17)
在插座上。(_stream_readable.js:765:14)
在Socket.emit(events.js:92:17)
在emitReadable上(_stream_readable.js:427:10)
在emitReadable(_stream_readable.js:423:5)
在readableAddChunk(_stream_readable.js:166:9)
在Socket.Readable.push(_stream_Readable.js:128:10)
在TCP.onread(net.js:529:21)
--------------------
at Protocol._enqueue(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Protocol/Protocol.js:135:48)
在PoolConnection.query(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Connection.js:201:25)
在Array.async.auto.processParent[as 0](/vagrant/sharpOne_app/node_modules/sails mysql/lib/adapter.js:586:24)
at/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/async/lib/async.js:574:38
在arrayEach(/vagrant/sharpOne\u app/node\u modules/sails mysql/node\u modules/async/lib/async.js:78:13)
在Object.async.auto(/vagrant/sharpOne\u app/node\u modules/sails mysql/node\u modules/async/lib/async.js:536:9)
在Cursor.populateBuffers[作为$populateBuffers](/vagrant/sharpOne_app/node_modules/sails mysql/lib/adapter.js:581:19)
在Cursor.run(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/waterline Cursor/Cursor/Cursor.js:45:8)
在runJoins(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/waterline cursor/index.js:51:10)
在加入时(/vagrant/sharpOne\u app/node\u modules/sails mysql/lib/adapter.js:514:9)
之后(/vagrant/sharpOne_app/node_modules/sails mysql/lib/connections/spawn.js:84:5)
at/vagrant/sharpOne_app/node_modules/sails mysql/lib/connections/spawn.js:40:7
在Ping.onOperationComplete[as_callback](/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Pool.js:99:5)
在Ping.Sequence.end(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:96:24)
在Ping.Sequence.OkPacket(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/protocol/sequences/Sequence.js:105:8)
at Protocol._parsePacket(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Protocol/Protocol.js:274:23)
在Parser.write(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/protocol/Parser.js:77:12)
在Protocol.write(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Protocol/Protocol.js:39:16)
在插座上。(/vagrant/sharpOne_app/node_modules/sails mysql/node_modules/mysql/lib/Connection.js:96:28)
在Socket.emit(events.js:95:17)
在插座上。(_stream_readable.js:765:14)
在Socket.emit(events.js:92:17)
详细信息:错误:ER_PARSE_错误:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解第1行“[object object]、[object object])附近使用的正确语法
我如何正确地在waterline中使用和,很明显,sails mysql支持“和”,但我不知道是什么导致了错误”,或者“工作完美,没有问题,我无法链接到何处,因为waterline只给我最后一个where的结果。”

我使用的是Sails v10.4和Sails mysql v0.11.2,我想使用的查询如下:

从用户位置选择*和(authType='google'或dealershipcompany=11)(名字像'%search%'或姓氏像'%search%'或电子邮件像'%search%')


它返回的结果是,如果用户的authType为google或经销商公司编号为11,则您不必明确指定
,因为waterline将完全*匹配您作为普通密钥对包含的内容()

这应该可以做到:

   var queryObject = {
    where: {
      or: [
        {firstName: {'contains': search}},
        {lastName: {'contains': search}},
        {email: {'contains': search}},

      ],
      authType: 'google',
      dealershipcompany: 11
    }
  }
这将匹配
authType
正好是
'google'
经销商公司
正好是
11
的记录,然后匹配
中的任何内容


*我认为waterline查询不区分大小写


编辑:删除了错误的
{}

我在水线中寻找
之间的
。用于范围查询

下面的代码片段很有效。也应该为其他人工作

userId:{'':10}
以下修饰符可用于生成查询

'<' / 'lessThan'
'<=' / 'lessThanOrEqual'
'>' / 'greaterThan'
'>=' / 'greaterThanOrEqual'
'!' / 'not'
'like'
'contains'
'startsWith'
'endsWith'
'='/'greaterThanOrEqual'
'!' / '不是
“喜欢”
“包含”
“startsWith”
“endsWith”

谢谢,我不知道我不需要明确指定,但我想做的是匹配authType为“google”或经销商公司为11的记录。我已经编辑了我的答案以修复错误。现在那里的代码应该与您的authType&dealershipcompany完全匹配。
'<' / 'lessThan'
'<=' / 'lessThanOrEqual'
'>' / 'greaterThan'
'>=' / 'greaterThanOrEqual'
'!' / 'not'
'like'
'contains'
'startsWith'
'endsWith'