2017-03-23 33 views
0

如何访问app.get中的变量或变量集并使其可供整个项目访问?我试图捕获SMS文本发送的信息,组织到“messageData”变量中,然后发送到“MessageSchema”,然后发送并存储在Mongo数据库中。我的问题是,我相信没有任何变量(消息,数字,答案)真正被发现。我该如何解决这个问题?如何访问app.get中的变量

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,节点和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; 

最后,这就是将所有的信息到数据库。

如果有人发现任何东西或有任何提示来改善此代码,请让我知道,我愿意为您提供所有的输入!

谢谢!

回答

0
var messageData = { 
    number: req.body.number, 
    message: req.body.message, 
    answer: req.body.answer 
    }; 

这是好的。但是请记住,这些变量是通过POST正文发送的,而不是像另一个那样的查询。

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

如果你不能确定你是路过他们好了,你可以在某一个点测试很容易被console.info(...);并使用Postman轻松测试POST行为。

+0

非常感谢,我会研究一下!我不确定你有多深入研究这些代码示例,但是,您是否偶然发现了可能导致在数据库中缺少发布的其他任何内容? – ItsMeRileyP