2016-04-26 28 views
6

Tôi đã tạo một bot trò chuyện nhỏ sau the tuto của Esther Crawford. Bot này kiểm tra chuỗi nhập người dùng và trả lời bằng một trong các câu trả lời json của tôi.Cách: chỉnh sửa tệp json bên ngoài trong javascript

Ví dụ: nếu tôi nói "hello" bot sẽ trả lời "Xin chào, tôi rất vui vì bạn đã đặt EstherBot lên!"

script.json

{ 
    "HELLO": "Hey, I'm so glad you set EstherBot up!", 
    "I LOVE YOU": "Awh, shucks! I love you too!", 
    "CONNECT ME": "", 
    "DISCONNECT": "Roger that, EstherBot is back." 
} 

Câu hỏi của tôi là, làm thế nào để chỉnh sửa script.json tập tin của tôi trong javascript?

Hiện tại khi người dùng nhập chuỗi không xác định, bot sẽ trả lời rằng nó không hiểu.

script.js

if (!_.has(scriptRules, upperText)) { 
    return bot.say('Sorry I dont understand').then(() => 'speak'); 
} 

Làm thế nào tôi có thể nhận được chuỗi vô danh này của người sử dụng và thêm nó vào script.json tập tin của tôi bằng cách chỉnh sửa trong javascript tệp json của tôi?

Tôi muốn bot của mình tự học, nếu không biết câu trả lời, nó sẽ tự động thêm câu hỏi của người dùng vào tập tin script.json và yêu cầu trả lời cho người dùng. Và sau đó thêm câu trả lời này vào tập tin script.json.

Để tiếp tục: Cách chỉnh sửa tệp json trong javascript?

Rất cám ơn vì sự giúp đỡ của bạn! Here bạn sẽ tìm thấy dự án này trên git với mã đầy đủ

ps: Ứng dụng của tôi được lưu trữ trên heroku.

+0

One, bạn có muốn thay đổi trong bộ nhớ của đại diện tệp JSON? Hoặc tệp JSON thực được lưu trữ trên máy chủ web? Hai, nếu sau này, câu hỏi đặt ra là "làm cách nào tôi có thể đăng dữ liệu mới này, lọc dữ liệu một cách an toàn và lưu nó vào tệp JSON?" – Skerkles

+0

Tôi không chắc chắn để hiểu câu hỏi của bạn nhưng tôi sẽ trả lời giải thích cách hoạt động của các ứng dụng của tôi. Khi tôi thực hiện một sửa đổi trong một trong các tập tin trong git nó sẽ tự động cập nhật trong Heroku. Vì vậy, tôi chỉ muốn thay đổi mã javascript của tệp script.js để thêm đối tượng địa lý để sửa đổi tệp script.json của tôi thêm câu hỏi của người dùng và câu trả lời của anh ấy. –

Trả lời

7

Bạn không thể lưu tệp bằng tập lệnh kích thước máy khách, bạn phải sử dụng một số kịch bản lệnh phía máy chủ như PHP, NodeJS v.v ... để lưu nội dung nào đó vào tệp.

Ví dụ trong NodeJS bạn có thể sử dụng thư viện fs:

fs = require('fs'); 
var m = JSON.parse(fs.readFileSync('fileName.json').toString()); 
m.forEach(function(p){ 
    p.name= m.name; 
}); 
fs.writeFile('fileName.json', JSON.stringify(m)); 

Hy vọng nó giúp

+0

Ứng dụng của tôi nằm trên máy chủ trên heroku, có thể làm điều gì đó tương tự như vậy với heroku không? –

+0

Yeah Heroku cung cấp hỗ trợ cho NodeJS xem: https://devcenter.heroku.com/articles/getting-started-with-nodejs#introduction –

2

Giả sử bạn có JSON của bạn đã nạp:

var json = '{"hola":"chao"}'; 
//Parse the JSON: convert it into an object 
var parsedJson =JSON.parse(json); 
//add whatever you want 
parsedJson.hi = 'bye'; 

var json của bạn sẽ trông giống như : Đối tượng {hola: "chao", hi: "bye"}

Sau đó, bạn có thể chuyển đổi đối tượng thành chuỗi doi ng JSON.stringify (parsedJson) và ghi lại vào đĩa/DB nếu bạn đang thao tác nó trong phần phụ trợ của bạn (ví dụ: NodeJs).

4

Thật không may, không có mã phía máy chủ - có thể yêu cầu & lưu trữ tệp trên máy chủ - không thể lưu tệp.
Tuy nhiên bạn có thể sử dụng localStorage.

Ví dụ:

//If statement to check if localStorage already stored. 
if (!localStorage.script) { 

    localStorage.script = JSON.stringify({ 
"HELLO": "Hey, I'm so glad you set EstherBot up!", 
"I LOVE YOU": "Awh, shucks! I love you too!", 
"CONNECT ME": "", 
"DISCONNECT": "Roger that, EstherBot is back." 
}) ; 

} 

//This will load the localStorage data into an object in the varaible called botScript 
var botScript = JSON.parse(localStorage.script) ; 

function saveScript() { 

    //This will save the current object to the localStorage. 
    localStorage.script = JSON.stringify(botScript) ; 

} 

Bạn có thể đọc thêm tại http://www.w3schools.com/html/html5_webstorage.asp.
Bạn cũng có thể sử dụng bộ nhớ phiên nếu bạn muốn nó tạm thời.

0

Javascript (client side), không chức năng để tạo, chỉnh sửa vv .. files.You có thể làm điều đó trong back-end bên

Các vấn đề liên quan