Mongoose Model.find()。select()如果Select为空字符串,返回什么?

时间:2019-05-25 15:30:53

标签: node.js mongodb mongoose

因此,我们假设我们使用的是以下简单模式:

const phoneRegex = require('./phoneRegex');
const Schema = require('mongoose').Schema;
const PersonSchema = new Schema({
  firstName: String,
  lastName: String,
  phone: {
    type: String,
    regex: phoneRegex,
  },
  Address: {
    street1: String,
    street2: String,
    city: String,
    state: String,
    zip: String,
  }
});

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

,并且我希望对猫鼬进行预设调用以查找人员列表,但是我希望可以选择限制从数据库返回的内容。我知道我可以使用模型的select()函数,但是当您提供一个空字符串时会发生什么? (即Person.find(options).select('');

我的预定义函数如下:

//sample options object.
const options = {
  firstName: {
    $regex: '^John',
    $options: 'i',
  },
};
const Person = require('./person');
const fetchAll = (Options, select = '') => {
  return Person.find(Options).select(select);
};

我知道我想传递属性名称以选择要返回的属性,但是空的选择字符串是否与“ SELECT NONE”相同?

1 个答案:

答案 0 :(得分:1)

通读the docs后,看来_id字段之外的所有字段都将被忽略,因为默认情况下已包含该字段。您是在说include nothing, exclude everything else

我目前没有猫鼬设置可以对此进行测试,因此更多是有根据的猜测。