2017-03-23 1 views
0

app.get에서 변수 또는 변수 세트에 액세스하여 전체 프로젝트에 액세스 할 수있게하려면 어떻게해야합니까? SMS 텍스트에서 보낸 정보를 캡처하려고하며 "messageData"변수로 구성된 다음 "MessageSchema"로 전송되어 Mongo 데이터베이스에 저장되고 저장됩니다. 내 문제는 변수 (메시지, 숫자, 대답)가 실제로 발견되지 않는다고 믿는다는 것입니다. 어떻게 해결할 수 있습니까?app.get 내의 변수에 액세스하는 방법

이는 SMS 텍스트를 검색 무엇이며, Twilio, 노드 및 IBM Bluemix를 실시

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(''); 
}); 

(위) app.js.

하는 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; 

마지막으로, 이것은 DB에 대한 모든 정보를 보내는 것입니다.

누구든지이 코드를 개선하거나 개선하기위한 정보가 있으면 알려주십시오. 제공 할 수있는 모든 정보를 공개합니다!

고맙습니다!

답변

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

대단히 감사합니다. 나는 그 코드 샘플을 얼마나 깊이 조사했는지 확신 할 수는 없지만, DB에 게시하지 않을 수있는 다른 것을 우연히 발견 했습니까? – ItsMeRileyP

관련 문제