无法使用NodeJ检查MongoDB上的字段是否存在

时间:2019-05-27 14:57:46

标签: node.js mongodb

我正在使用NodeJs和MongoDb作为我的android应用程序的后端服务。我正在检查数据库中是否存在Phone字段。 我的问题是,即使文档中不存在“电话”字段,每次检查发送的字段时,响应字段都存在。

这是我的代码:

const express = require('express');
const bodyParser = require('body-parser');
const env = require('dotenv').config();
const router = express.Router();
const MongoClient = require('mongodb').MongoClient;

var dburl = process.env.URL;

router.use(bodyParser.json());
router.use(bodyParser.urlencoded({extended:true}));

router.post('/checkPhone',(req,res) => {

        var data = req.body.uId;

MongoClient.connect(dburl,{useNewUrlParser:true},(err,client) => {

              if(err){

                console.log("Error:" +err);
              }
              else{

                var collect = client.db('Bookbudi_db').collection('Users');

                collect.find({_id:data,Phone:{$exists:true}},(err,doc) => {

                             if(err){

                                console.log("Error:" +err);
                             }
                             if(doc){

                                res.send("Exist");
                             }
                             else{

                                res.send("Doesn't exist");
                             }

                });

              }

     });  

 });

module.exports = router;

请让我知道我在上面的代码中做错了什么。任何帮助将不胜感激。

谢谢

1 个答案:

答案 0 :(得分:0)

如果{ $exists:true }返回了文档-这意味着该字段在那里。

您的模式有可能定义了该字段并通​​过null对其进行初始化-请注意,$exists仍将返回这些字段。

参考: $exists