为什么mongoose字段设置了alias,查询返回的不是驼峰
时间: 2024-02-23 15:59:24 浏览: 21
mongoose字段设置了alias后,查询返回的不是驼峰是因为在 MongoDB 中,字段名是区分大小写的,而 mongoose 的 alias 是通过修改查询语句来实现的,它只会将查询语句中的字段名进行修改,而不会修改返回结果中的字段名,因此返回的字段名仍然是原始的字段名,而不是驼峰形式的 alias。如果需要返回驼峰形式的字段名,可以在查询语句中使用 projection 来修改返回结果的字段名。例如:
```javascript
Model.find({}, { 'aliasName': 1, '_id': 0 }).exec(function(err, docs) {
console.log(docs);
});
```
这里使用 projection 将 aliasName 字段返回,并将 _id 字段排除在外,可以得到驼峰形式的字段名。
相关问题
mongoose查询多表嵌套数据字段返回驼峰形式
可以使用 `populate()` 方法进行多表嵌套查询,并使用 `select()` 方法指定需要返回的字段。如果需要返回的字段是驼峰形式,可以在 schema 定义中使用 `toJSON: { virtuals: true }`,并在查询时使用 `lean()` 方法使查询结果变为普通 JavaScript 对象,然后使用 `lodash` 库中的 `camelCase()` 方法将字段名转为驼峰形式。
具体代码如下:
```javascript
const _ = require('lodash');
const User = require('./models/user');
const Post = require('./models/post');
Post.find()
.populate({
path: 'author',
select: 'name email'
})
.lean()
.exec((err, posts) => {
if (err) {
console.error(err);
} else {
posts = _.map(posts, post => {
post.author = _.camelCase(post.author);
return post;
});
console.log(posts);
}
});
```
在上述代码中,我们使用 `populate()` 方法进行多表嵌套查询,并使用 `select()` 方法指定需要返回的字段。然后使用 `lean()` 方法使查询结果变为普通 JavaScript 对象,最后使用 `lodash` 库中的 `camelCase()` 方法将字段名转为驼峰形式。
mongoose查询多表嵌套数据并将字段返回驼峰形式
可以使用 `populate()` 方法进行多表嵌套查询,并使用 `select()` 方法指定需要返回的字段。如果需要返回的字段是驼峰形式,可以在 schema 定义中使用 `toJSON: { virtuals: true }`,并在查询时使用 `lean()` 方法使查询结果变为普通 JavaScript 对象,然后使用 `lodash` 库中的 `camelCase()` 方法将字段名转为驼峰形式。
具体代码如下:
```javascript
const _ = require('lodash');
const User = require('./models/user');
const Post = require('./models/post');
Post.find()
.populate({
path: 'author',
select: 'name email',
options: { lean: true }
})
.lean()
.exec((err, posts) => {
if (err) {
console.error(err);
} else {
posts = _.map(posts, post => {
post.author = _.camelCase(post.author);
return post;
});
console.log(posts);
}
});
```
在上述代码中,我们使用 `populate()` 方法进行多表嵌套查询,并使用 `select()` 方法指定需要返回的字段。在 `populate()` 方法中使用了 `options` 参数,将 `lean` 设为 `true`,使查询结果变为普通 JavaScript 对象。然后使用 `lean()` 方法使查询结果变为普通 JavaScript 对象,最后使用 `lodash` 库中的 `camelCase()` 方法将字段名转为驼峰形式。