gpt4 book ai didi

express - Mongoose查询结果中是否可以获取虚拟属性?

转载 作者:行者123 更新时间:2023-12-02 14:32:45 26 4
gpt4 key购买 nike

我正在寻找(但找不到任何)优雅的解决方案,如何在 Mongoose 模型 Person 中使用虚拟属性 fullName

Person.js

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const PersonSchema = new Schema(
{
firstName: {type: String, required: true, max: 100},
lastName: {type: String, required: true, max: 100}
}
);

PersonSchema
.virtual('fullName')
.get(function () {
return this.firstName + ' ' + this.lastName;
});

module.exports = mongoose.model('Person', PersonSchema);

实际上我可以访问 fullName,但不知道如何将其添加到结果对象中。

app.js

const express = require('express');

require('./connectDB');
const Person = require('./Person');

const app = express();

app.get('/', async (req, res) => {
const result = await Person.find();
result.map((person) => {
console.log('Virtual fullName property: ', person.fullName);
// console print:
// Jane Smith
});
console.log('All returned persons: ', result);
// console print:
// [{ _id: 5ad9f4f25eecbd2b1c842be9,
// firstName: 'Jane',
// lastName: 'Smith',
// __v: 0 }]

res.send({result});
});

app.listen(3000, () => {
console.log('Server has started at port 3000');
});

因此,如果您对如何使用虚拟有任何想法,请发布

解决方案(感谢 Jason)

在模型导出之前将此代码添加到 Person.js 中:

PersonSchema
.set('toObject', { getters: true });

最佳答案

将虚拟包含在 res.send() 中在 express 集 PersonSchema.set("toJSON", { getters: true });关于架构。

关于express - Mongoose查询结果中是否可以获取虚拟属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945538/

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