【发布时间】:2019-02-20 09:11:21
【问题描述】:
我是一名在这家公司参加 OJT 的大学生,我的任务是创建一个使用 REST API 将数据添加到 Firebase 数据库的 Android 应用。该应用程序是一个项目列表应用程序,我需要在其中注册、登录、项目列表视图,并能够添加、编辑和删除项目。我需要使用 Node.js、Android Studio 和 Firebase。我的团队负责人让我学习 REST API、Node.js、JSON、Firebase,我现在有点了解我应该用这些做什么,至少是概念和理论上。
问题在于代码。这是压倒性的。我是 javascript 新手,我刚开始学习它是在给我这个任务的那天(一周前)。而且我不知道如何在 Android Studio 和 Node.js 上创建代码,以便 API 可以处理客户端和服务器之间的请求/响应。请记住,我的截止日期大约为 4-5 周。
我现在的代码非常基础,我什至不确定它们是否正确。现在我只有注册活动和 Node.js 上的服务器。我使用 Android Studio 3.1.4,节点 v8.11.4,npm v5.6.0
aSignUpActivity.java
public class aSignUpActivity extends AppCompatActivity {
EditText etFname, etLname, etEmail, etUname, etPword, etConfPword;
Button btnConfirmSU;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a_sign_up);
etFname = (EditText) findViewById(R.id.asuFnameET);
etLname = (EditText) findViewById(R.id.asuLnameET);
etEmail = (EditText) findViewById(R.id.asuEmailET);
etUname = (EditText) findViewById(R.id.asuUnameET);
etPword = (EditText) findViewById(R.id.asuPwordET);
etConfPword = (EditText) findViewById(R.id.asuCpwordET);
btnConfirmSU = (Button) findViewById(R.id.asuConfirmSU);
btnConfirmSU.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
confirmSignupClicked();
}
});
}
public void confirmSignupClicked(){
String fName = etFname.getText().toString();
String lName = etLname.getText().toString();
String eMail = etEmail.getText().toString();
String uName = etUname.getText().toString();
String pWord = etPword.getText().toString();
String cPword = etConfPword.getText().toString();
if(TextUtils.isEmpty(fName) || TextUtils.isEmpty(lName) || TextUtils.isEmpty(eMail) || TextUtils.isEmpty(uName) || TextUtils.isEmpty(pWord) || TextUtils.isEmpty(cPword)){
Toast.makeText(this, "Can't leave any text fields empty.", Toast.LENGTH_SHORT).show();
}
else{
Intent intent = new Intent(aSignUpActivity.this, aStartPageActivity.class);
Toast.makeText(this, "Account created.", Toast.LENGTH_SHORT).show();
startActivity(intent);
}
}
}
server.js(我复制粘贴了这些代码并对其进行了编辑以适应我的情况)
var admin = require('firebase-admin')
var serviceAccount = require('./myprivatekey.json')
// var port = process.env.PORT || 3000
// var express = require('express')
// var app = express()
// var bodyParser = require('body-parser')
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "mydatabase.firebaseio.com"
})
// app.use(bodyParser.urlencoded({extended: true}))
// app.use(bodyParser.json())
var db = admin.database()
var dbRef = db.ref('usersinfo')
//API - SIGN UP USER
function addUser(userid, username, email, password){
var usersRef = dbRef.child("user")
usersRef.set({
"USER ID": userid,
"USERNAME": username,
"EMAIL": email,
"PASSWORD": password,
})
}
//testing if function works
addUser("test", "test", "test", "test")
//API - ADD ITEM
function addItem(userid, image, name, description){
var itemsRef = dbRef.child("useritems")
itemsRef.set({
"USER ID": userid,
"IMAGE": image,
"NAME": name,
"DESCRIPTION": description
})
var itemId = itemsRef.key
}
//testing if function works
addItem("test", "test", "test", "test")
//API - VIEW ITEM
function viewItem(itemId) {
var itemRef = dbRef.child("useritems/" + itemId)
itemRef.on("value", function(snapshot) {
if (snapshot.exists()) {
console.log(snapshot.val())
return snapshot.val()
} else {
console.log("Cannot view item.", itemId)
return null
}
}, function (errorObject) {
console.log("error: " + errorObject.code)
});
}
//API - EDIT ITEM
function editItem(itemId, editimage, editname, editdescription){
var itemRef = dbRef.child("useritems/", itemId)
itemRef.update({
"IMAGE": editimage,
"NAME": editname,
"DESCRIPTION": editdescription
})
console.log("Item successfully edited")
itemRef.on("value", function(snapshot){
console.log(snapshot.val())
}, function (errorObject){
console.log("Edit failed: " + errorObect.code)
})
}
//API - DELETE ITEM
function deleteItem(itemId){
itemRef = dbRef.child("useritems/" + itemId)
itemRef.once("value")
.then(function(snapshot){
if(snapshot.exists()){
console.log("Item removed successfully.")
return "Item removed."
}else{
console.log("Item does not exist")
return "Error."
}
})
.catch(function(error){
console.log("deleteItem failed: " + error.code)
})
}
我要问的是,是否有人可以为我指明如何开始的正确方向?喜欢资源链接?关于我的代码的建议?对初学者友好的东西。 YouTube 和 google 上的大多数示例使用 HTML 作为客户端的前端,或者使用教程作为 Android 聊天应用程序,或者使用 mongoDB/SQL 作为数据库。也许我搜索得不够好?请帮忙。
【问题讨论】:
-
firebase 拥有实时数据库,因此您无需后端编码即可完成所有这些操作
-
这是真的,但根据要求,我需要使用 node.js 编写自己的 API
标签: android json node.js rest firebase