首页 > 解决方案 > 无法使用 NodeJs 检查 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;

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

谢谢

标签: node.jsmongodb

解决方案


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

您的架构可能会定义此字段并使用/启动它null- 请注意,$exists仍将返回这些字段。

参考: $exists


推荐阅读