gpt4 book ai didi

node.js - 如何仅获取虚拟属性。 Node.JS + Mongoose + MongoDB

转载 作者:太空宇宙 更新时间:2023-11-03 22:55:43 25 4
gpt4 key购买 nike

假设我定义了一个Mongoose 架构

var Schema_MySchema = new mongoose.Schema({
Field1: String, Field2: String
});

我通过以下方式添加了虚拟属性和设置选项:

Schema_MySchema.virtual('USERNAME').get(function () {
return this.Field1;
});

Schema_MySchema.set('toJSON', { virtuals: true });

使用架构对象从 MongoDB 检索数据,如下所示:

var Mod_Obj = mongoose.model('SchemaName', Schema_MySchema);
var Model_Instance = new Mod_Obj();
Model_Instance.find({}, function (err, docs) {
/*
Here I get a object docs with following structure:
[{ _id: ObjectId("511XXXdff9c4c419000008"),
Field1: 'SOMEvalueFromMongoDB_1',
Field2: 'SOMEvalueFromMongoDB_2',
USERNAME: 'SOMEvalueFromMongoDB_1'
}]
*/
});

现在我想删除从 MongoDB 返回的实际属性,假设我想从 docs 中删除 Field1

我尝试了以下方法来删除:

1. 删除 docs.Field1;

2. var Json_Obj = docs.toJSON();删除 Json_Obj.Field1;

3. var Json_Obj = docs.toObject({ virtuals: true });删除 Json_Obj.Field1;

4. 删除文档[0].Field1;

5. 删除文档[0]['Field1'];

所有的方法都行不通。 :-(

如果执行简单 JSON 测试,它会起作用:

var a = { 'A' : 1, 'B': 2 };
delete a.A;
console.log(a); //prints only object with B attribute only. i.e. { B: 2 }

谁能告诉我这里出了什么问题吗?

提前致谢...

最佳答案

我相信您缺少索引,因为 docs 是一个数组。

如果您的文档具有以下结构

[{ _id: ObjectId("511XXXdff9c4c419000008"), 
Field1: 'SOMEvalueFromMongoDB_1',
Field2: 'SOMEvalueFromMongoDB_2',
USERNAME: 'SOMEvalueFromMongoDB_1'
}]

删除代码应该是

delete docs[index]['Field1']

即。删除第一个元素的 Field1

delete docs[0]['Field1']

更新评论:

请引用this answer就这样。

在这里你需要这样做

var k = docs[index].toObject();
delete k['Field1'];

关于node.js - 如何仅获取虚拟属性。 Node.JS + Mongoose + MongoDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14767902/

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