【问题标题】:How to get result to array in mongoose?如何在猫鼬中获得结果?
【发布时间】:2018-08-23 00:53:04
【问题描述】:

我是 Angular 新手,刚开始使用 mongoose 处理 mongodb。

在我的应用程序中,我需要以字符串数组的形式获取驱动程序的名称列表,但是,我正在获取具有对象 ID 的对象数组。

{
            "_id": "5aa90ab23c49a72488afab7a",
            "name": "mr. Rusiru ekanayaka"
        },
        {
            "_id": "5aa90d4ba8c6b35438a8b132",
            "name": "mr. Gihan ekanayaka"
        },
        {
            "_id": "5aa90d56a8c6b35438a8b133",
            "name": "mr. Gihan ekanayaka"
        }
}

但我需要这样的东西,

[
  ' mr. Gihan ekanayaka,
  ' mr. rusiru ekanayaka ',
  ' mr. Gihan ekanayaka '
]

我想我可以通过遍历对象在我的后端重新格式化它。无论如何,是否可以将集合中的文档的一个字段作为没有对象 id 的字符串数组获取?

在我的 Driver 模型中,我确实喜欢这样。

module.exports.getDrivers = function(callback){
  Driver.find({},'name',callback);
}

【问题讨论】:

  • 试试module.exports.getDrivers = function(callback){ Driver.distinct('name',callback); }
  • @Veeram 这只返回不同的值。当有两个同名的驱动程序时会发生什么?

标签: node.js angular mongodb mongoose


【解决方案1】:

一种方法是使用map,例如:

Driver.find({}).map(driver => driver.name);

这(通过调整代码以适应您的编码环境)将返回一个 driver.name 项数组,如下所示:

[
  "mr. Rusiru ekanayaka",
  "mr. Gihan ekanayaka",
  "mr. Gihan ekanayaka"
]

【讨论】:

  • 当我这样做时,它会给出这个错误 -> Vehicle.find(...).map 不是函数.....
【解决方案2】:

试试这个:

module.exports.getDrivers = function(callback){

Driver.distinct('name', callback);

}

【讨论】:

  • 这只会返回不同的值。当有两个同名的驱动程序时会发生什么?
【解决方案3】:

试试这个

module.exports.getDrivers = function(callback){
  Driver.find({},{'_id' : 0,'name' : 1},callback);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2020-09-02
    • 1970-01-01
    • 2022-01-23
    • 2012-05-21
    • 2017-01-15
    • 2021-03-08
    相关资源
    最近更新 更多