gpt4 book ai didi

sails.js - 如何从 sails-mongo native 结果正确实例化水线模型对象?

转载 作者:行者123 更新时间:2023-12-02 21:44:09 26 4
gpt4 key购买 nike

我在一个项目中使用 SailsJS,并且我需要使用 native() 来执行某些查询。我遇到的问题是,我无法找到从 mongo 集合 find 结果实例化水线模型对象的正确方法。我一直在搜索有关此的信息,我发现的唯一内容如下:

var instance = new Model._model(mongo_result_item);

这应该可以正常工作,但是当我执行 instance.save(function(err, ins){}); 时,模型会因“_id”字段而引发错误,该错误应该是“id”。

我查看了 sails-mongo 代码,发现对于“find”方法,他们这样做:

// Run Normal Query on collection
collection.find(where, query.select, queryOptions).toArray(function(err, docs) {
if(err) return cb(err);
cb(null, utils.normalizeResults(docs, self.schema));
});

因此,normalizeResults 使用“_id”属性和其他内容发挥了魔力。

我现在执行此操作的方法是要求 sails-mongo utils.js 文件能够访问此方法。

完整示例:

var mongoUtils = require('sails-mongo/lib/utils.js');

SampleModel.native(function(nativeErr, collection){

collection.find({ 'field' : value }).toArray(function(collectionErr, results){
if (!results || results.length == 0) return res.restfullInvalidFieldValue({ msg : 'INVALID_VALUE' });

var norm_results = mongoUtils.normalizeResults(results);
var instance = new SampleModel._model(norm_results[0]);

});

});

有更好/正确的方法来实现这一目标吗?

我需要进行 native 搜索,因为我发现使用字符串的 Waterline find() 方法存在问题,其中搜索应区分大小写。模型上的每个字符串字段都用作以下形式的正则表达式匹配:/^{string}$/i

使用不区分大小写标志的正则表达式搜索会给我带来问题。另一方面,执行 { field : { $regex : new RegExp('^'+regexp_escaped_string+'$') } } 是可能的,但我认为它的性能会比 { field : value } 最差。

如果有人找到了解决不区分大小写问题的不同解决方法,请为我​​指出正确的方向。

提前致谢。

最佳答案

$regex 可能会帮助您使用选项参数“i”来搜索不区分大小写的字符串,您也可以指定自定义正则表达式以获取更多信息,请参阅 $regex mongodb 文档。

/**
* PetController
*
* @description :: Server-side logic for managing pets
* @help :: See http://links.sailsjs.org/docs/controllers
*/

module.exports = {
searchByName: function (req,res) {

Pet
.native(function(err, collection) {
if (err) return res.serverError(err);

collection.find(
{
name: { $regex: /like-my-name/, $options: "i" } // here option "i" defines case insensitive
},
{
name: true
})
.toArray(function (err, results) {
if (err) return res.serverError(err);

return res.ok(results);
});
});
}
};

有关 native mongo 查询的更多信息,请参阅此处 - https://stackoverflow.com/a/54830760/1828637

关于sails.js - 如何从 sails-mongo native 结果正确实例化水线模型对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33123461/

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