gpt4 book ai didi

node.js:将 ObjectId 数组与字符串对象 id 或字符串 ObjectId 数组进行比较

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:50 27 4
gpt4 key购买 nike

我的架构是:

var schema = new Schema({
players: {
type: [Schema.Types.ObjectId]});

我正在使用 promise 。我通过 id 获取集合的简单查询是:

MyModel.findById(id).exec()
.then(function (doc) {
//here I'm getting my doc
})
.catch(next)

我正在获取我的文档,但问题是我正在获取一个 ObjectId 数组,并且我想将此 ObjectId 数组与我的字符串形式的 ObjectId 进行比较。在一种情况下,我想在该 ObjectId 数组中找到该字符串 id 的索引。

我尝试过lodash,比如

var index = _.indexOf(doc.players, idInStringForm);//getting -1 as response

也尝试过

var index = _.indexOf(doc.players.toString().split(","), idInStringForm);//it is working

但是当我需要对 ObjectIds 数组进行联合时,上述逻辑会失败,例如:

 var arrayOfIds = _.union(doc.players.toString().split(","), stringArrayOfIds);

上面的方法不起作用,因为当 doc.players 为空时,arryaryOfIds 还包含 "",这使我的一个查询失败。

针对上述情况我们有更好/通用的解决方案还是需要进行 if-else 检查?

最佳答案

您可以在检查数组和 id 的并集之前过滤掉任何空字符串。

function removeEmptyStrings(value) {
return value != "";
}

array = array.filter(removeEmptyStrings);

只要数组值等于空字符串,它就会将其从数组中删除。

请参阅此处有关过滤方法的文档:Filter

关于node.js:将 ObjectId 数组与字符串对象 id 或字符串 ObjectId 数组进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35346220/

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