gpt4 book ai didi

javascript - Mongoose 中的条件查询,查询中包含整数

转载 作者:行者123 更新时间:2023-12-03 10:28:34 25 4
gpt4 key购买 nike

我正在看这个问题How to build a conditional query in Mongoose?并尝试通过处理查询字符串中的整数来构建它。

我有以下代码。

    var conditions = {};
var patt = new RegExp('^[0-9]');

for (var key in req.query) {
if (req.query.hasOwnProperty(key)) {
if(patt.test(req.query[key])) {
conditions[key] = new RegExp('^' + parseInt(req.query[key]) + '$', 'i');
}
else {
conditions[key] = new RegExp('^' + req.query[key] + '$', 'i');
}
}
}

当我执行&color=red时,它会返回等于红色的颜色。

但是当我执行 &version=2 等操作时,我什么也没有返回。

我在 if 语句中放置了一个控制台日志,以确认 patt 正则表达式正在获取以 int 开头的值,但这似乎是在我执行时执行的会期望(返回版本 = 2 的结果)。

如果我要按如下方式重组我的代码,这确实可以部分工作。然而,这个解决方案并不是真正可维护的,因为我需要为每个潜在参数添加一个条件,并且需要返回并修改更多可用参数。

var version = parseInt(req.query.version);
var query = Model.find();
if (version) {
query = query.where('version').equals(version);
}

上面代码片段的另一个问题是,如果我正在寻找一个字符串,例如标题,并且标题以数字开头,例如 7up,那么这也不会返回任何结果。

var title= req.query.title;
var query = Model.find();
if (version) {
query = query.where('title').equals(title);
}

是否有一个解决方案可以在此处使用,该解决方案允许我使用请求中的任何参数,并在与我的 patt 正则表达式匹配时将其视为整数?

下面是我的数据模型的片段,一旦我可以正常工作,我打算添加更多数字字符串的项目

    var ModelSchema = new Schema({
version: {
type: Number,
trim: true
},
color: {
type: String,
trim: true
},
title: {
type: String,
trim: true
},
});

mongoose.model('Model', ModelSchema);

最佳答案

如果我遵循您的代码,看起来您正在尝试使用正则表达式来搜索查询中的整数,这对我来说没有意义。您有 conditions[key] = new RegExp('^' + parseInt(req.query[key]) + '$', 'i'); 但您应该能够简单地拥有 conditions[key] = parseInt(req.query[key]);

很高兴这有效。谢谢!

关于javascript - Mongoose 中的条件查询,查询中包含整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com