묻고 답해요
144만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결1:1채팅 만들기(Android + Kotlin + Firebase)
개복님 말씀대루 다했는데 도중에 앱이 꺼져용
- 개복님 수업 잘듣고 있습니다. 이번에 최신버전 설치해서 말씀하신거 따라 하구 있는데 , 오류가 뜨는건 아닌데 앱을 구동시키니 팅겨버리네요. ㅠ 로그캣에서 에러난 곳을 살펴보니 auth=firebase.auth 여기서 오류가 난거 같습니다. 말씀하신거 중에서는 apply plugin: 'com.google.gms.google-services' 한개 못했는데, 최신버전에는 plugin { id' '} 이렇게 되있는 곳에 ' com.google.gms.google-services ' 집어넣으려고 하니 오류가 떠서 못집어넣었어요. 제가 잘못생각하는 건가용 .. 개복님이 보기에 한심해보이겠지만 ㅠㅠ 도와주세용 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결1:1채팅 만들기(Android + Kotlin + Firebase)
안녕하세요. 말씀하신 import 추가했는데 오류가 또 뜨네요 ㅠ
- 버전은 4.0.1입니다 . 처음에는 최신버전으로 하다가 바꿔서 4.12 로 했구. 방금 4.0.1로 했는데 똑같이 뜨네요 ㅠ 인프런 질문 검색해보니 다른분도 똑같이 질문했던데 답변이 안달렸더라구여. 밑에 사진은 그분거 입니다. 선생님 강의 들으면서 공부하고 있었는데 여기서 막히네요 ㅠ
-
미해결1:1채팅 만들기(Android + Kotlin + Firebase)
안녕하세욤 강의 잘보고 있습니다
- 붙여 넣기 하는 와중에 auth 마지막 부분이 오류가 발생해요. 어떻게 할수 있을까요?? 강의 잘보고 있습니다. 꾸벅 는 1:1 문의하기를 이용해주세요.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
이미지 이름 오류
drawable 폴더에 splash 이미지 파일이 있는데 왜 이미지뷰에서 스플래쉬이미지가 적용이 안될까요?
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
파이어베이스 익명로그인 강의 09:01 부분 문의
해당 부분 에서 FirebaseAuth, Firebase는 자동으로 import가 되는데 Firebase.auth 부분에서 뒤에 auth가 자동 import가 뜨질 않고 Unresolved reference:auth 에러가 계속 발생합니다. 한 번만 확인해주시면 감사하겠습니다. // LoginActivity package com.fitdback.userinterface import android.support.v7.app.AppCompatActivity import android.os.Bundle import android.util.Log import android.widget.Button import android.widget.Toast import com.fitdback.pointdetection.R import com.google.firebase.auth.FirebaseAuth import com.google.firebase.ktx.Firebase class LoginTestActivity : AppCompatActivity() { private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_login_test) // Initialize Firebase Auth auth = Firebase.auth val btnAnonymousLogin = findViewById<Button>(R.id.btnAnonymousLogin) btnAnonymousLogin.setOnClickListener { auth.signInAnonymously() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Log.d("LoginTestActivity", "signInAnonymously:success") val user = auth.currentUser // updateUI(user) } else { // If sign in fails, display a message to the user. Log.w("LoginTesetActivity", "signInAnonymously:failure", task.exception) Toast.makeText( baseContext, "Authentication failed.", Toast.LENGTH_SHORT ).show() // updateUI(null) } } } } } // build.gradle(app) apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'com.google.gms.google-services' android { compileSdkVersion buildConfig.compileSdk defaultConfig { applicationId 'com.fitdback.userinterface' minSdkVersion buildConfig.minSdk targetSdkVersion buildConfig.targetSdk versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static' cppFlags "-std=c++11","-frtti", "-fexceptions" } } ndk { abiFilters 'armeabi-v7a' } } // externalNativeBuild { // cmake { // path "CMakeLists.txt" // } // } lintOptions { abortOnError false } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } aaptOptions { noCompress "tflite" } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } sourceSets { main { jniLibs.srcDirs = ['libs'] } } } repositories { maven { url 'https://google.bintray.com/tensorflow' } flatDir { dirs 'libs' } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation project(':openCVLibrary341') implementation deps.kotlin.stdlib.jdk // implementation(name:'tensorflow-lite', ext:'aar') implementation deps.android.support.appcompatV7 implementation deps.android.support.constraintLayout implementation deps.android.support.design implementation deps.android.support.annotations implementation deps.android.support.supportV13 implementation deps.timber implementation 'org.tensorflow:tensorflow-lite:0.0.0-nightly' implementation 'org.tensorflow:tensorflow-lite-gpu:0.0.0-nightly' // Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:29.2.1') // Declare the dependency for the Firebase Authentication library // When using the BoM, you don't specify versions in Firebase library dependencies implementation 'com.google.firebase:firebase-auth-ktx' testImplementation deps.junit androidTestImplementation(deps.android.test.espresso, { exclude group: 'com.android.support', module: 'support-annotations' }) }
-
미해결Flutter + Firebase로 넷플릭스 UI 클론 코딩하기 [무작정 플러터]
FirebaseFrirestroe 사용시 아래코드로 하시면 됩니다.
cloud_firestore3.1.10 사용시 참고하세요 class _HomeScreenState extends State<HomeScreen> { FirebaseFirestore firebaseFirestore = FirebaseFirestore.instance; late Stream<QuerySnapshot> streamData; @override void initState() { super.initState(); streamData = firebaseFirestore.collection('movie').snapshots(); } Widget _fetchData(BuildContext context) { return StreamBuilder<QuerySnapshot>( stream: FirebaseFirestore.instance.collection('movie').snapshots(), builder: (context, snapshot) { if (!snapshot.hasData) { return LinearProgressIndicator(); } return _buildBody(context, snapshot.data!.docs); }); } Widget _buildBody(BuildContext context, List<DocumentSnapshot> snapshot) { List<Movie> movies = snapshot.map((d) => Movie.fromSnapshot(d)).toList(); return ListView(children: [ Stack( children: [CarouselImage(movies: movies), TopBar()], ), CircleSlider(movies: movies), BoxSlider(movies: movies) ]); } @override Widget build(BuildContext context) { return _fetchData(context); } }
-
미해결vue.js 실전 프로젝트(트위터 클론)
firebase 버전에 따른 import 문제 질문드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 firebase authentication 강의를 듣다가 에러가 지속적으로 발생해서 문의 드립니다. 현재 버전에 따르면 import firebase from 'firebase'는 더이상 지원 하지 않는다고 합니다. 즉, firebase/app 이런 식으로 세부적으로 들어가야한다고 합니다.. 그에 따라 강사님이 작성해주신 export const auth = firebase.auth() 에서 auth 함수가 작동하지 않습니다. 여러 검색 결과 이제는 initalizeApp 따로, getAuth 따로 import를 해주어야한다고 확인하였고 auth() 함수는 getAuth를, firestore() 함수는 getFireStore 를 import하여 어찌 진행해 볼 수 있었으나 storage() 함수는 어디를 어떻게 찾아야할 지 방법이 없어 질문을 드립니다.. 아니면 firebase install 하는 버전을 강사님과 동일하게 맞춰야 하는지 생각도 됩니다. 강사님과 동일한 firebase 버전으로 변경하여 진행하여도 해당 에러가 발생합니다..
-
해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 사진 여러장 업로드 방법 좀 알려주세요.
당근마켓 같이 상품 올릴때 사진올리잖아요. 그런형태를 원합니다. 그래서 리사이클러뷰 형태로 아이템에 사진이 나오게는 했습니다. private fun imageUpload(key: String) {} saveBtn.setOnClickListener {imageUpload(key) finish()} 강의에서는 1개만 업로드 하셨는데 사진 여러장을 업로드는 어떻게 하나요? 구글링, 유튜브 찾아봤는데 여러장 올리는건 드물고 자바형식에..... 도저히 안되서 질문 드려요.
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
res.req.file로 코딩하시는 이유가 궁금합니다.
multer를 사용해서 하나의 파일만 받는 메소드인 upload를 사용하고 그 안에서 req, res, err 를 받아서 console.log(res.req.file)을 코딩하실 때, 설명으로는 upload의 응답인 res에 ImageUpload.js의 요청인 req라고 설명주시면서 res.req.file를 코딩하셨는데 req.file로 ImageUpload.js의 요청을 받아오는 것까지는 이해가 되었으나, res.req.file을 코딩하시는 것은 이해가 잘되지 않았습니다. 조금 더 추가적인 설명 부탁드립니다.
-
해결됨[초중급편] 안드로이드 데이팅 앱 만들기(Android Kotlin)
메인 슬라이딩 화면구현 CardStackView 구현 강의 4분 30초쯤 질문드려요!
<com.yuyakaido.android.cardstackview.CardStackView android:layout_width="match_parent" android:layout_height="match_parent"/> 이렇게 작성하니 Class referenced in the layout file, com.yuyakaido.android.cardstackview. CardStackView, was not found in the project or the libraries Cannot resolve class com.yuyakaido.android.cardstackview.CardStackView 이런 에러가 뜨네요 뭐 따로 설치 해야하는건가요??
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스에 글이 정상적으로 입력되었는지 여부를 알 수 있어야
파이어베이스에 글이 정상적으로 입력되었는지 여부를 알 수 있어야 입력완료 메시지를 띄우고 그렇지 않고 글입력 실패일 경우에는 토스트 메시지가 달라질 것 같습니다. 물론 실패할 경우 finish도 실행하지 않게 되겠지요? 파이어베이스로부터 입력 결과를 알아를 확인하는 절차에 관해서도 함께 다루어주세요.
-
미해결MERN STACK 커뮤니티 : 시작부터 배포까지 알려주는 React
Post 챕터 Read (1) 강의에서 axios 안되시는 분들 정보 공유합니다
백단에서 post요청 then().catch() 설정한 후 클라이언트 List.js에서 axios로 /api/post/list 포스트 요청하고 콘솔창 확인해보면 400 에러가 뜨는데 일단 서버폴더 Model/Post.js에서 스키마 부분 Collection : "posts"로 바꾼 다음에 다시 새로고침 해보니깐 postList 데이터 콘솔창에 찍힙니다 초반강의 몽구스 설정할 때 collation : "posts"로 하셨는데 오타인지 궁급합니다!
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
이미지 안 뜰 때 해결법!
안녕하세요. 강의 잘 듣고 있습니다. 질문란을 보니 저와 같은 분들이 질문을많이 올려주셨는데, 해결책을 알려드리려고 합니다. INTERNET permission을 추가하고 앱을 실행한 다음에, 안드로이드 에뮬레이터에서 앱을 삭제하고 다시 실행하셔야 정상적으로 이미지가 뜨는 것을 확인할 수 있습니다. 열공하세요!
-
미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
댓글 삭제 기능 구현 질문
안녕하세요 강의를 열심히 듣고있는 수강생입니다! 다름이 아니라 댓글 불러오기 강의를 수강한 이후 게시판 삭제 기능처럼 댓글도 똑같이 자기가 작성한 댓글을 삭제하도록 구현해보고 있는데 난관에 봉착하여 질문드리게 됐습니다.. binding.deleteIcon.setOnClickListener { itemClickListener.onClick(it, position) } val myUid = FBAuth.getUid() val writerUid = items[position].commentUid if(myUid.equals(writerUid)){ binding.deleteIcon.isVisible = true } else{ } } } interface OnItemClickListener { fun onClick(v: View, position: Int) } // (3) 외부에서 클릭 시 이벤트 설정 fun setItemClickListener(onItemClickListener: OnItemClickListener) { this.itemClickListener = onItemClickListener } // (4) setItemClickListener로 설정한 함수 실행 private lateinit var itemClickListener : OnItemClickListener} 우선 commentrvadpater에서 댓글아이템에 내가 작성한 댓글에 uid가 같으면 삭제 아이콘이 보이게끔 하는걸 뷰홀더에 적용시켰고, 성공했습니다. commentAdapter.setItemClickListener(object: CommentRVAdapter.OnItemClickListener{ override fun onClick(v: View, position: Int) { FBRef.commentRef.child(key).removeValue() Toast.makeText(this@BoardInsideActivity,"댓글 삭제 완료", Toast.LENGTH_SHORT).show() }}) 리사이클러뷰 클릭 이벤트를 boardinsideactivity 즉, 게시판 내부를 구현해주는 액티비티에 구현하여 삭제아이콘을 누르면 댓글이 삭제가 완료되고 토스트메시지까지 띄워졌습니다. 하지만 문제가 생겼습니다.. 위에서 삭제 아이콘을 누르면 게시판 내에 댓글이 모두 삭제됩니다. 리얼타임베이스 시점에서 보면 게시판 key값 내에 파란 부분만 삭제하고 싶은데 빨간부분 모두 삭제됩니다 ..ㅠ commentAdapter.setItemClickListener(object: CommentRVAdapter.OnItemClickListener{ override fun onClick(v: View, position: Int) { FBRef.commentRef.child(key).removeValue() Toast.makeText(this@BoardInsideActivity,"댓글 삭제 완료", Toast.LENGTH_SHORT).show() }}) 아마 이 코드에서 child에 있는 key값을 지워주는게 아닌 다른 값을 지워줘야 되는게 문제인거 같은데 child 안에 무슨 값을 넣어줘야될지 잘 모르겠습니다... class BoardInsideActivity : AppCompatActivity() { private lateinit var binding: ActivityBoardInsideBinding private lateinit var key : String private val TAG = BoardInsideActivity::class.java.simpleName private val CommentDataList = mutableListOf<CommentModel>() private lateinit var commentAdapter:CommentRVAdapter override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityBoardInsideBinding.inflate(layoutInflater) setContentView(binding.root) binding.boardSettingIcon.setOnClickListener { showDialog() } key = intent.getStringExtra("key").toString() getBoardData(key) getImageData(key) binding.commentBtn.setOnClickListener { insertComment(key) } getCommentData(key) commentAdapter = CommentRVAdapter(this,CommentDataList) binding.commentRV.adapter = commentAdapter binding.commentRV.layoutManager= LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false) binding.commentRV.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL)) commentAdapter.setItemClickListener(object: CommentRVAdapter.OnItemClickListener{ override fun onClick(v: View, position: Int) { FBRef.commentRef.child(key).removeValue() Toast.makeText(this@BoardInsideActivity,"댓글 삭제 완료", Toast.LENGTH_SHORT).show() } }) } fun getCommentData(key:String){ val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { CommentDataList.clear() for(dataModel in dataSnapshot.children) { Log.d(TAG,dataModel.toString()) dataModel.key val item = dataModel.getValue(CommentModel::class.java) CommentDataList.add(item!!) } commentAdapter.notifyDataSetChanged() } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FBRef.commentRef.child(key).addValueEventListener(postListener) } fun insertComment(key :String) { FBRef .commentRef .child(key) .push() .setValue( CommentModel( binding.commentArea.text.toString(), FBAuth.getTime(), FBAuth.getUid() ) ) Toast.makeText(this,"입력 완료", Toast.LENGTH_SHORT).show() binding.commentArea.setText("") } private fun showDialog(){ val mDialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog, null) val mBuilder = AlertDialog.Builder(this) .setView(mDialogView) .setTitle("게시글 수정/삭제") val alertDialog = mBuilder.show() alertDialog.findViewById<Button>(R.id.editBtn)?.setOnClickListener { val intent = Intent(this, BoardEditActivity::class.java) intent.putExtra("key",key) startActivity(intent) alertDialog.cancel() } alertDialog.findViewById<Button>(R.id.removeBtn)?.setOnClickListener { FBRef.boardRef.child(key).removeValue() Toast.makeText(this,"삭제 완료",Toast.LENGTH_SHORT).show() finish() } } private fun getImageData(key: String){ // Reference to an image file in Cloud Storage val storageReference = Firebase.storage.reference.child(key + ".png") // ImageView in your Activity val imageViewFromFB = binding.getImageArea storageReference.downloadUrl.addOnCompleteListener(OnCompleteListener { task-> if(task.isSuccessful){ Glide.with(this) .load(task.result) .into(imageViewFromFB) } else{ binding.getImageArea.isVisible=false } }) } private fun getBoardData(key: String) { val postListener = object : ValueEventListener { override fun onDataChange(dataSnapshot: DataSnapshot) { try { val dataModel = dataSnapshot.getValue(BoardModel::class.java) dataModel!!.title?.let { Log.d(TAG, it) } binding.titleArea.text = dataModel!!.title binding.textArea.text = dataModel!!.content binding.timeArea.text = dataModel!!.time binding.uidArea.text = dataModel!!.uid val myUid = FBAuth.getUid() val writerUid = dataModel.uid if(myUid.equals(writerUid)){ binding.boardSettingIcon.isVisible = true } else{ } } catch (e:Exception){ Log.d(TAG,"삭제완료") } } override fun onCancelled(databaseError: DatabaseError) { // Getting Post failed, log a message Log.w(TAG, "loadPost:onCancelled", databaseError.toException()) } } FBRef.boardRef.child(key).addValueEventListener(postListener) }} 이건 전체 코드입니다.
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
09:55 질문입니다!
-package com.daeyeon.fb_firebase_email_password_auth import androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport android.widget.Buttonimport android.widget.EditTextimport android.widget.Toastimport com.google.firebase.auth.FirebaseAuthimport com.google.firebase.auth.ktx.authimport com.google.firebase.ktx.Firebaseclass MainActivity : AppCompatActivity() { private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) auth = Firebase.auth val joinBtn = findViewById<Button>(R.id.joinBtn) joinBtn.setOnClickListener { val email = findViewById<EditText>(R.id.emailArea) val password = findViewById<EditText>(R.id.passwordArea) Log.d("MAIN", email.text.toString()) Log.d("MAIN", password.text.toString()) auth.createUserWithEmailAndPassword(email.text.toString(), password.text.toString()) .addOnCompleteListener(this) { task -> if (task.isSuccessful) { // Sign in success, update UI with the signed-in user's information Toast.makeText(this, "성공", Toast.LENGTH_LONG).show() } else { // If sign in fails, display a message to the user. Toast.makeText(this, "실패", Toast.LENGTH_LONG).show() } } } } } 이메일 비번을 치고 회원가입을 누르면 자꾸 실패가 떠요!....
-
미해결[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
nextInt가 import가 안됩니다.
alt+enter를 눌러도 임포트가 계속 안되는데 혹시 이유를 알수 있을까요? 혹시 몰라 MainActivity의 코드를 첨부하겠습니다!감사합니다! package com.example.dice_appimport androidx.appcompat.app.AppCompatActivityimport android.os.Bundleimport android.util.Logimport android.widget.Toastimport androidx.databinding.DataBindingUtilimport com.example.dice_app.databinding.ActivityMainBindingimport java.util.*import kotlin.random.Random.Default.nextIntclass MainActivity : AppCompatActivity() { private lateinit var binding : ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) binding = DataBindingUtil.setContentView(this, R.layout.activity_main) val diceImage1 = binding.dice1 val diceImage2 = binding.dice2 binding.diceStartBtn.setOnClickListener { Toast.makeText(this, "주사위 GO!", Toast.LENGTH_LONG).show() Log.d("MainActivity", Random.nextInt(1, 6).toString()) Log.d("MainActivity", Random.nextInt(1, 6).toString()) val number1 = Random.nextInt(1, 6) val number2 = Random.nextInt(1,6) if (number1 ==1 ){ diceImage1.setImageResource(R.drawable.dice_1) } else if(number1 == 2){ diceImage1.setImageResource(R.drawable.dice_2) } else if(number1 == 3){ diceImage1.setImageResource(R.drawable.dice_3) } else if(number1 == 4){ diceImage1.setImageResource(R.drawable.dice_4) } else if(number1 == 5){ diceImage1.setImageResource(R.drawable.dice_5) } else { diceImage1.setImageResource(R.drawable.dice_6) } if (number2 ==1 ){ diceImage2.setImageResource(R.drawable.dice_1) } else if(number2 == 2){ diceImage2.setImageResource(R.drawable.dice_2) } else if(number2 == 3){ diceImage2.setImageResource(R.drawable.dice_3) } else if(number2 == 4){ diceImage2.setImageResource(R.drawable.dice_4) } else if(number2 == 5){ diceImage2.setImageResource(R.drawable.dice_5) } else { diceImage2.setImageResource(R.drawable.dice_6) } } }}
-
미해결
파이어베이스 설치 오류인가요?
리액트로 로그인을 구현하려 파이어베이스를 설치했는데 사이트를 열려고 하니 오른쪽처럼 오류가 떴습니다 설치도 제대로 했고 firebaseConfig를 만들기 전까진 오류없이 잘 실행됐는데 어떤게 문제일까요?
-
미해결파이어베이스(Firebase)를 이용한 웹+안드로이드 메모 어플리케이션 만들기
firebase list err 해결
영상에서는 터미널에서 firebase login을 한 뒤, firebase list 를 입력하면 연결된 프로젝트를 확인할 수 있다고 나오는데 버전이 달라져서 firebase projects:list 라고 입력해야 확인이 가능합니다! firebase list 라고 입력하면 Error: list is not a Firebase command 이렇게 에러가 납니다. 참고하세요 :)
-
미해결1:1채팅 만들기(Android + Kotlin + Firebase)
firebase 업데이트 된버전에 코드를 알 수 있을 까요?
firebase 업데이트 된버전에 코드를 참고하고 싶은데 공개된 소스가 없나요? 강의 들으면서 firebase 공식문서 같이보면서 수정하는 방법 밖에 없나요?
-
미해결[2021] 요즘 누가 유료로 웹서비스 구축하나, 파이어베이스의 모든 것 - Vue.js
is not defined
강사님 설명이 너무 부실합니다 ㅜㅜ 다른강의에서 한거라서 건너띈다는 부분이 너무 많네요.. firebase.firestore() firebase.auth().currentUser db.collection 이런 부분 무슨 기능인지 모르겠는데 따로 제가 다 찾아봐야 되는거죠?