- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 StrongLoop 中,“in”过滤器不适用于字符串类型的字段。我在这里发帖是为了看看是否有其他人看到过这个问题,或者它是否是 StrongLoop MongoDB 连接器中的一个已知问题。还要看看是否有任何解决方法。
它确实适用于整数类型字段。但是当我在字符串类型上测试它时,它不返回任何东西。
我直接在我的数据库 MongoDB 命令行中尝试了相同的查询,并且整数和字符串过滤器都有效。所以我知道我的格式是正确的,我正在尝试的查询是有效的。
这是我在 StrongLoop 模型自定义 API 中使用的代码的一部分,用于使用 in 过滤器查询数据库。
这很好用:
Grades.find({where: {grade: {in:[1,2]} }},
这行不通:
Grades.find({where: {subject: {in:["math","biology"]} }},
我没有在这里放太多代码,因为这需要数据库设置和 strongloop 设置,让我知道,如果需要我可以添加更多代码。
谢谢,卡洛斯
问题似乎出在 mongo-db 连接器之外。调试以下连接器 (loopback-connector-mongodb/lib/mongodb.js) 后,当字段类型为字符串时,我看到“function all”正在接收不正确的过滤器。
loopback-connector-mongodb/lib/mongodb.js:
//
// Find matching model instances by the filter
//
// param {String} model The model name
// param {Object} filter The filter
// param {Function} [callback] The callback function
//
MongoDB.prototype.all = function all(model, filter, options, callback) {
var self = this;
if (self.debug) {
debug('all', model, filter);
}
console.log("carlos999: HERE!!!!");
if(filter.where['subject']){
console.log('carlos998: cond:%s cond.constructor.name:%s', filter.where['subject'], filter.where['subject'].constructor.name);
}
if(filter.where['grade']){
console.log('carlos997: cond:%s cond.constructor.name:%s', filter.where['grade'], filter.where['grade'].constructor.name);
}
我的模型:
"grade": {
"type": "number",
"required": true
},
"subject": {
"type": "string",
"required": true
},
在下面的示例代码中,您可以看到当字段类型为 Integer 时数组是如何正确处理的(在这种情况下,出于调试目的,我在数组中传递了字符串值,您可以看到它们如何一直传播到 MongoDB称呼)。但在字符串类型字段(“主题”)的情况下。数组未正确处理。
这个案例没问题
查询:
Grades.find({where: {grade: {in:["math","biology"]} }},
输出:
carlos997: cond:[object Object] cond.constructor.name:Object
carlos929: cond:[object Object] cond.constructor.name:Object
carlos29: k:grade cond:[object Object] cond.constructor.name:Object cond.options:undefined
carlos: propName:grade prop:[object Object]
carlos: spec: in k:grade cond:math,biology cond.constructor.name:Array cond.options:undefined
carlos: MongoDB: model=grades command=find [ { importance: { '$in': [Object] } }, [Function] ]
这个案例有一个问题(可能是 StrongLoop 错误):
查询:
Grades.find({where: {subject: {in:["math","biology"]} }},
输出:
carlos998: cond:[object Object] cond.constructor.name:String
carlos929: cond:[object Object] cond.constructor.name:String
carlos29: k:subject cond:[object Object] cond.constructor.name:String cond.options:undefined
carlos: propName:subject prop:[object Object]
carlos: spec: false k:subject cond:[object Object] cond.constructor.name:String cond.options:undefined
carlos: MongoDB: model=grades command=find [ { subject: '[object Object]' }, [Function] ]
我正在继续调试,但如果其他人也加入进来就更好了。
谢谢,卡洛斯
确认问题与String类型有关。我将我的模型更改为使用“数字”而不是“字符串”,只是为了确认 $in 过滤器使用的数组得到了正确处理。事实上,它奏效了。
模型变化:
"grade": {
"type": "number", //changed from string
"required": true
},
"subject": {
"type": "number",
"required": true
},
输出:
carlos998: cond:[object Object] cond.constructor.name:Object
carlos929: cond:[object Object] cond.constructor.name:Object
carlos29: k:subject cond:[object Object] cond.constructor.name:Object cond.options:undefined
carlos: propName:subject prop:[object Object]
carlos: spec: in k:subject cond:math,biology cond.constructor.name:Array cond.options:undefined
carlos: MongoDB: model=grades command=find [ { subject: { '$in': [Object] } }, [Function] ]
最佳答案
我认为您的运算符(operator)名称“in”拼错了,应该是“inq”。
The inq operator checks whether the value of the specified property matches any of the values provided in an array. The general syntax is:
{ where: { property: { inq: [val1, val2, ...] } } }
where: property is the name of a property (field) in the model being queried. val1, val2, and so on, are literal values in an array.
关于mongodb - StrongLoop: "in"过滤器不适用于字符串类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35005956/
我在使用 StrongLoop Arc 连接到 StongLoop PM 时遇到问题。我正在关注these directions . 这是我尝试过的: # in one terminal window
我正在学习 LoopBack(又名 Strongloop)。当我去 https://strongloop.com/它告诉我安装npm install -g apiconnect。因此,我正在使用 ap
我该如何在回送模型中使用聚合函数?如果我有一个由mysql数据库支持的模型,我是否可以将Model1与has2有hasMany关系(具有给定的数字属性),并在Model1中拥有一个属性,该属性可以从M
我有 3 个模型 A、B、C A属于BB属于C 我想查询 A,包括 B,包括 C。但我只想要每个模型的几个字段。在不指定任何“字段”的情况下使用这样的过滤器可以正常工作并带回嵌套模型。 { "in
我正在尝试设置一个示例强循环应用程序,当我尝试使用/explorer 试用 post api 时出现以下错误。 "Cannot call AccessToken.findById(). The fin
我在 middleware.json 中以下列方式在 Strongloop 中配置了我的中间件: { "initial:before": { "loopback#favicon": {}
我在使用 admin Angular 色测试基本身份验证时遇到问题。我正在尝试设置一个管理员 super 用户,该用户将有权访问 Role 和 User REST API 等。根据文档中的示例,我使用
根据文档,您可以创建自定义响应类; https://docs.strongloop.com/display/public/LB/Remote+methods#Remotemethods-Argumen
我看到 loopback 带有作为节点模块集成的 nodemailer。我尝试按照文档通过 angular-sdk 发送 hello world 邮件 http://apidocs.strongloo
我是 Strongloop 的新手。我的 datasources.json 配置如下: "platformDB": { "host": "localhost", "port": 3306, "data
我有列类型为 JSON 的 MySQL 表 { "type": "1", "local": "1", "maker": "1" } 我想追加 JSON 数组 [{ "type": "1", "loca
我的这个应用有 3 个模型:用户、事件和 field 。 用户可以创建在某个 field 发生的事件,以下是关系: 用户:hasMany 事件 地点:hasMany事件 事件:属于用户 但我不确定事件
我想在验证发生后,在将模型保存到数据库之前更新模型。 环回请求生命周期中正确的点是什么(呃哦,这开始让我想起 .NET Webforms!)来执行此操作? Report.validatesPresen
原帖 在 StrongLoop 中,“in”过滤器不适用于字符串类型的字段。我在这里发帖是为了看看是否有其他人看到过这个问题,或者它是否是 StrongLoop MongoDB 连接器中的一个已知问题
我正在使用 StrongLoop 和 Loopback 创建一个 API。我已将内置的 User 模型扩展到我自己的名为 people 的模型。我不希望 User 模型像默认情况下那样需要电子邮件,所
我想在 Strongloop 应用程序中使用不同环境特定的数据源配置。我在 https://docs.strongloop.com/display/public/LB/Environment-spec
我正在使用 Strongloop。 Strongloop 提供了内置的用户模型。我想扩展要保存在 Mongodb 中的用户模型我还想在用户登录后发出经过身份验证的请求。我所说的经过身份验证的请求是指,
我一直在使用 slc run --detach --cluster "cpu"通过自定义 init.d/app.conf 脚本部署环回应用程序,但希望转而使用强-pm,按照建议。 但我遇到了一些限制,
我有一个 node.js 项目,使用 StrongLoop 和包含配置键值对的 config.local.json 和 config.json 文件。在 server.js 中,我使用以下代码来检索键
我是 Strongloop 的新手,我找不到有关如何自定义响应类(我构建的对象的模型架构)的信息,我不知道如何在 API 资源管理器上显示具有自定义数据的对象。 例如,我有一个名为 score 的自定
我是一名优秀的程序员,十分优秀!