gpt4 book ai didi

javascript - 如何访问对象内部的 `categoryIds` 字段/键,其中包含 mongodb 的 `ObjectId(s)` 数组作为值?

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

我在 Node.js 中有以下代码。

var getQuestionsByUserId = function (config) {
var query = {
_id: ObjectId(String(config.userId))
};
var projection = {
categoryIds: true,
_id: false
};
var respondWithCategories = function (error, docs) {
var categoryIdsList = []; // empty array
if (docs.length > 0) {
console.log("Inside if: ", docs[0]); // as expected
categoryIdsList = docs[0].categoryIds; // becomes undefined !! the mystery statement
}
console.log("Outside if: ", docs, categoryIdsList); // as expected considering above steps
};
UserModel.find(query, projection, respondWithCategories);
};

输出结果如下

Inside if: { categoryIds: [ 5731892996a8d72df29d8554, 572f9eb779c548660331071b ] }
Outside if: [ { categoryIds: [ 5731892996a8d72df29d8554, 572f9eb779c548660331071b ] } ] undefined

我使用 Mongodb 和 Mongoose 进行访问。Mongodb版本:v3.2.1
Node.js版本:v5.5.0

问题很简单。我如何获得categoryIds从对象。 docs是一个包含单个对象的数组。 categoryIds是对象中唯一具有数组值的字段。

所以我通过docs[0].categoryIds访问。我得到undefined !我在这里缺少什么?

我在浏览器js控制台上尝试过,它工作正常!

<小时/>

编辑:(捍卫这个问题的独特性)这个问题,标记为重复,与异步性质或回调无关,尽管我已经提到了 mongodb find 方法的回调。这个问题与数组中对象的神秘性质(我觉得我遗漏了一些东西)或干扰数组的 ObjectId 或某种在不改变 ObjectId 的情况下解析 JSON 对象的方法有关。 mongodb 返回的字段。

所以,请删除此问题的重复标记,并让其他人在这里帮助我。

<小时/>

最佳答案

感谢@JhonnyHK 。他的评论帮助我解决了问题。

原来是UserModel schema中出现了一个粗心的错误,拼写错误。不过好好学习。

基本上,这里意味着该字段未在架构中定义。因此,每当模式中缺少字段时,即使对象看起来不错,访问它也会在 Node.js 代码中产生 undefined

解决方案:更正您的架构,定义架构中正确访问的字段。在这种情况下,应更正 UserModel 架构。

提示:如果从 JavaScript Angular 来看一切都是正确的,并且在从 mongodb find 方法的回调参数访问对象时出现神秘的 undefined,请检查您的架构。

关于javascript - 如何访问对象内部的 `categoryIds` 字段/键,其中包含 mongodb 的 `ObjectId(s)` 数组作为值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37253166/

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