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'