我正在数据库中存储特定的键值。但是,在获取键值时,会出现 undefined 错误。
await DbHandler.fetch(codeStatus)
.then((result) => {
const codeEnabledObj = result[0];
console.log('codeEnabledObj', codeEnabledObj);
let codeEnabled = false;
if (codeEnabledObj && codeEnabledObj.length > 0) { // this code not executing at all.
codeEnabled = codeEnabledObj[0].isEnabled;
}
console.log('codeEnabled', codeEnabled); // getting false always
console.log('codeEnabledObj.length[0]', codeEnabledObj.length); // undefined
})
.catch((error) => {
});
问题是,如果条件和抛出未定义之类的错误,它就不会进入内部。
但是,如果我们从db fetch打印响应
'codeEnabledObj', { type: 'codeStatus', isEnabled: true } // This is my response
有什么建议吗?
答案 0 :(得分:2)
对象没有像数组一样的length属性。
codeEnabledObj.length
是错误的
使用此
Object.keys(codeEnabledObj).length
编辑:
codeEnabledObj[0].isEnabled
应该只是codeEnabledObj.isEnabled
答案 1 :(得分:0)
FindAndModify
中没有属性长度,而且它不是数组。所以修改条件是可行的,其中isEmpty可以用作
节点软件包为MongoSession, err := mongo.NewClient(options.Client().ApplyURI("mongodb://localhost:27017"))
if err != nil {
panic(err)
}
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
err = MongoSession.Connect(ctx)
collection := MongoSession.Database("test").Collection("people")
a, err := primitive.ObjectIDFromHex("XXXXXXXXXX") //hiding hex value
b := collection.FindOneAndUpdate(ctx, bson.M{"_id": a}, bson.M{"$set": bson.M{"phone": "Replacing using the query"}})
codeEnabledObj
和
underscore
谢谢。