如何从JSON提取单个字符串

时间:2018-09-04 15:00:20

标签: javascript json node.js mongodb

我正在尝试从mongodb中检索一个json文档,并在提取后仅提取一个字段,例如“ email”,以便我可以使用它向用户发送电子邮件

setInterval(()=>{        
            return User.find({email: 'qw@qw'})
                .then(doc => {
                    console.log(doc);
                    console.log(doc.name)
                 })
                .catch(err => {
                    console.log("error")
                })
    }, 5000)

我的模式

const
    mongoose                = require("mongoose"),

// MONGOOSE MODEL CONFIGURATION
const UserSchema = new mongoose.Schema({

    email:{
        type: String
    },
    name: {
        type: String,
    },
    phone: {
        type: String,
    }
});

module.exports = mongoose.model('User', UserSchema);

我的JSON如下:

[ { _id: 5b892cdc060e8d000405d304,
    email: 'qw@qw',
    name: 'john',
    phone: '111111111'
    __v: 0 } ]

console.log(doc.name)返回了"undefined"

有人可以帮助我解决如何正确执行此操作吗?

2 个答案:

答案 0 :(得分:1)

  

我的JSON看起来像

[ { _id: 5b892cdc060e8d000405d304,

(如果这确实是JSON,那么您要做的第一件事就是使用JSON.parse将其转换为JavaScript。我怀疑find方法是否会向您提供JSON。)

您正在尝试读取对象的name属性,但是doc不是该对象。

看看[

这是一个包含该对象的数组

您需要从数组中提取对象(例如,使用doc[0]或循环),然后从中读取name属性。

可能您可能想使用findOne而不是find

答案 1 :(得分:-2)

请找到更新的答案。由于结尾处有多余的],我指出了这一点。 更新:Mongo db返回BSON并将其转换为API层中的有效JSON格式。

请尝试使所有内容如下所述。 我还更新了代码笔。

根据先前的评论和Chris G的输入进行更正。

var json = '[{ "_id": "5b892cdc060e8d000405d304" ,"email": "qw@qw", "name": "john", "phone": "111111111"      }]';
obj = JSON.parse(json);

console.log(obj[0].email);
// expected output: 42

console.log(obj[0].phone);

示例:

var json = '{"result":true, "count":42}';
obj = JSON.parse(json);

console.log(obj.count);
// expected output: 42

console.log(obj.result);
// expected output: true

现在您的情况是无效的json。我看到大多数键末尾都有多余的大括号。

var json = '{ "_id": "5b892cdc060e8d000405d304" ,"email": "qw@qw", "name": "john", "phone": "111111111"      }';
obj = JSON.parse(json);

console.log(obj.email);
// expected output: 42

console.log(obj.phone);
// expected output: true

在这里检查

https://codepen.io/anon/pen/QVgpwm?editors=1111