глобальные переменные в маршрутах узлов - PullRequest
0 голосов
/ 13 марта 2020

в коде, который я пытался сделать идентификатором пользователя глобальной переменной после создания и сохранения в mongodb, чтобы использовать идентификатор в маршруте сообщений, но, похоже, не работает. newuser.save().then(function(user){ if(user){ id=user._id; req.session.user=user req.flash("success","post added") return res.redirect("/navashanti")<br> }}).catch((err)=>{ if(err){ console.log(err)}

 `  app.get("/posts",function(req,res){
   user.findById().then(function(idresult){
    if(idresult){
    console.log(idresult)
    res.render("home",{idresult:idresult})
    }
    }    
             ` 

Ответы [ 3 ]

0 голосов
/ 14 марта 2020

Вы НЕ МОЖЕТЕ поместить данные для одного указанного c пользователя в глобальную переменную.

Даже если вы попробуете, это будет связано с ошибками синхронизации и параллелизма. Ваш сервер может обслуживать много пользователей. Если вы помещаете некоторые данные для пользователя A в глобальный объект, а затем появляется пользователь B, как сервер хранит нужные данные с нужным пользователем. Если вы просто используете один глобальный, это не так. Он смешивает данные, и один пользователь получает неверные данные, а данные другого пользователя перезаписываются. Это катастрофа. Вы не можете кодировать серверы таким образом.

Вместо этого данные на сервере должны храниться в указанном пользователем месте c, чтобы данные каждого пользователя сохранялись отдельно. Глобальные ресурсы являются общими для всех пользователей, поэтому они не будут работать для этого. Некоторые примеры пользовательского c хранилища:

  1. В записи базы данных для этого указания c пользователь
  2. В объекте сеанса на стороне сервера, который уникально для каждого указанного c пользователя.
  3. В поваре ie, который будет представлен серверу при будущих запросах для этого указанного c пользователя.

Если вы Если вы хотите конкретное c предложение по кодированию для вашей конкретной c проблемы, вам нужно будет показать нам соответствующую часть вашего кода и точно описать, какую проблему вы пытаетесь решить. Код, который у вас есть в вашем вопросе, до сих пор неполон, неправильно отформатирован (поэтому его трудно прочитать), и вы не полностью описываете, какую проблему вы на самом деле пытаетесь решить.

0 голосов
/ 14 марта 2020

Добавление к ответам здесь не очень хорошая идея хранить идентификатор пользователя как глобальную переменную. Я не слишком знаком с возможностями MongoDB, но я думаю, что вы можете попробовать использовать sessions, поскольку это позволяет вам безопасно сохранять пользовательские данные на время сеанса пользователя.

0 голосов
/ 13 марта 2020

вы можете определить его с помощью GLOBAL или global.

global.id; // Declaration global variable - undefined
global.id= 1; //Global variable initialized to value 1. 
var userID =  global.id; // Using the global variable. 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...