2017-03-23 66 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