【问题标题】:MongoDB create user dependent view/pipelineMongoDB 创建用户相关视图/管道
【发布时间】:2022-01-18 15:40:56
【问题描述】:

我只是偶然发现了 MongoDB 中的视图,并想知道,原则上是否可以创建一个用户依赖视图。例如,他的用户设置来自 User_Settings 集合。

对于视图,我想出了以下代码,只要事先知道用户名,它就可以正常工作:

[
   { 
        "$match" :
        { 
            "name" : "test"
        }
    }
], 
{ 
    "allowDiskUse" : false
}

当前用户名可通过以下方式访问:

var currentUser = db.runCommand({connectionStatus: 1}).authInfo.authenticatedUsers[0].user

但我无法找到如何将这两者合并成一个连贯的视图定义。我试过这样,这显然是行不通的:

    "$let" :
    {
        vars: {currentUser: {connectionStatus: 1}},
        in: {connectionStatus: 1}
    }
    { 
        "$match" :
        { 
            "name" : currentUser
        }
    }
], 
{ 
    "allowDiskUse" : false
}

这有可能吗?如果是这样,如果有人能提供一个例子,我将非常感激。

谢谢

【问题讨论】:

    标签: mongodb mongodb-query studio3t


    【解决方案1】:

    const MongoClient = require('mongodb').MongoClient;
    
    const mongo_uri = `mongodb://${settings.database.host}:${settings.database.port}`;
    // use it for setup
    const MongoClient = require('mongodb').MongoClient;
    const settings = require('./settings');
    const mongo_uri = `mongodb://${settings.database.host}:${settings.database.port}`;
    const bcrypt = require('bcrypt');
    
    const saltRounds = 10;
    
    const user = {
      username: 'adam',
      password: 'password'
    };
    
    MongoClient.connect(mongo_uri, { useNewUrlParser: true })
    .then(client => {
      const db = client.db('project');
      const collection = db.collection('users');
      bcrypt.genSalt(saltRounds, (error, salt) => {
        bcrypt.hash(user.password, salt, (error, hash) => {
          user.password = hash;
          collection.insertOne(user)
            .then(() => console.log('User inserted'))
            .catch(error => console.error(error));
        });
      });
    }).catch(error => console.error(error));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 2019-11-20
      • 1970-01-01
      • 2013-09-10
      • 2014-01-01
      • 1970-01-01
      • 2022-12-09
      • 2013-04-04
      相关资源
      最近更新 更多