Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何访问app.get中的变量_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 如何访问app.get中的变量

Javascript 如何访问app.get中的变量,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,如何访问app.get中的一个变量或一组变量,并使整个项目都可以访问它?我试图捕获从SMS文本发送的信息,将其组织到“messageData”变量中,然后发送到“MessageSchema”,然后将其发送并存储在Mongo数据库中。我的问题是,我相信没有一个变量(信息、数字、答案)被真正找到。我怎样才能解决这个问题 app.js app.get('/smssent', function(req, res, callback) { var message = req.query.Body; var

如何访问app.get中的一个变量或一组变量,并使整个项目都可以访问它?我试图捕获从SMS文本发送的信息,将其组织到“messageData”变量中,然后发送到“MessageSchema”,然后将其发送并存储在Mongo数据库中。我的问题是,我相信没有一个变量(信息、数字、答案)被真正找到。我怎样才能解决这个问题

app.js

app.get('/smssent', function(req, res, callback) {
var message = req.query.Body;
var number = req.query.From;
var twilioNumber = req.query.To;

var context = null;
var index = 0;
var contextIndex = 0;
contexts.forEach(function(value)
{
  console.log(value.from);
  if (value.from == number)
  {
    context = value.context;
    contextIndex = index;
  }
  index = index + 1;
});

console.log('Recieved message from ' + number + ' saying \'' + message  + '\'');

var conversation = new ConversationV1({
  username: '',
  password: '',
  version_date: ConversationV1.VERSION_DATE_2016_09_20
});

//console.log(JSON.stringify(context));
//console.log(contexts.length);

conversation.message({
  input: { text: message },
  workspace_id: '',
  context: context
 }, function(err, response) {
     if (err) {
       console.error(err);
     } else {
      var answer = response.output.text[0];

if (context == null) {
         contexts.push({'from': number, 'context': response.context});
       } else {
         contexts[contextIndex].context = response.context;
       }

       var intent = response.intents[0].intent;
       console.log(intent);
       if (intent == "done") {
         //contexts.splice(contexts.indexOf({'from': number, 'context': response.context}),1);
         contexts.splice(contextIndex,1);
         // Call REST API here (order pizza, etc.)
       }

       var client = require('twilio')(
         '',
         ''
       );

       client.messages.create({
         from: twilioNumber,
         to: number,
         body: response.output.text[0]
       }, function(err, message) {
         if(err) {
           console.error(err.message);
         }
       });
     }
});

  res.send('');
});
(上图)这是检索SMS文本并执行Twilio、Node和IBM Bluemix的功能

index.js

router.post('/app', function(req, res, next) {
if (req.body.number &&
  req.body.message &&
  req.body.answer
) {
  // create object with form input
  var messageData = {
    number: req.body.number,
    message: req.body.message,
    answer: req.body.answer
  };

  // use schema's `create` method to insert document into Mongo
  Message.create(messageData, function (error, message) {
    if (error) {
      return next(error);
    } else {
      return res.redirect('/');
    }
  });

} else {
  var err = new Error('All fields required.');
  err.status = 400;
  return next(err);
}
});
(上图)这是为“MessageSchema”组织和准备一切的代码

message.js

var mongoose = require('mongoose');
var bcrypt = require('bcryptjs');

var MessageSchema = new mongoose.Schema({
  number: {
    type: String,
    required: true,
    trim: true
  },
  message: {
    type: String,
    required: true,
    trim: true
  },
  answer: {
    type: String,
    required: true,
    trim: true
  }
});
var Message = mongoose.model('Message', MessageSchema);
module.exports = Message;
最后,这就是将所有信息发送到数据库的原因

如果有人发现任何东西或有任何提示,以改善这段代码,请让我知道,我是开放的所有输入您可以给我

谢谢

  var messageData = {
    number: req.body.number,
    message: req.body.message,
    answer: req.body.answer
  };
这没关系。但是,请记住,这些变量是通过POST body发送的,而不是像其他查询一样发送的

queries: ?param = ...
body: (like POST form; hidden from the URL)

如果您不确定是否通过了测试,您可以通过
console.info(…)
在某一点上轻松地进行测试;并使用邮递员轻松测试发帖行为。

非常感谢,我将对此进行调查!我不确定您对这些代码示例的研究有多深入,但是,您是否碰巧注意到其他可能导致数据库中缺少发布的内容?