简体   繁体   English

属性“ id”在类型“ void”上不存在

[英]Property 'id' does not exist on type 'void'

Im trying to implement an audit trail for all actions for my angular application, like 'delete' 'addUser' 'update' etc. i was able to implement this successfully with the 'post blog' function which is in the "posts-dashboard.component.ts" and now im trying to do the same with the 'delete user' function which is in the "student-user.component.ts" but the compiler returns an error "Property 'id' does not exist on type 'void'" 我试图为我的角度应用程序的所有操作实施审核跟踪,例如“删除”,“ addUser”,“更新”等。我能够通过“ posts-dashboard”中的“ post blog”功能成功实现此目的。 component.ts”,现在我尝试使用“ student-user.component.ts”中的“ delete user”功能执行相同操作,但编译器返回错误“ void”类型上不存在“ Property'id” '”

i've tried defining id as 'id: any;' 我尝试将id定义为“ id:any;” and 'id =''' but i don't think that's the solution. 和'id ='''但我不认为这是解决方案。 the error wont go away. 错误不会消失。 The audit trail function is supposed to print the output (audit trail) in the console and store the audit trail log in the database under the audit-trail model 审计跟踪功能应该在控制台中打印输出(审计跟踪),并将审计跟踪日志存储在审计跟踪模型下的数据库中

this is my student-user.component.ts. 这是我的student-user.component.ts。 Look out for the deleteStudent(value) function...that's where i'm implementimg it 寻找deleteStudent(value)函数...这就是我实现它的地方

import { Component, OnInit } from '@angular/core';
import { map, catchError} from 'rxjs/operators';
import {FirebaseService} from '../services/firebase.service';
import {Router} from '@angular/router';
import { AngularFirestore} from "angularfire2/firestore";
import { Observable } from 'rxjs';
import { AuditTrailService } from 'src/app/services/audit-trail/audit-trail.service';
import { AngularFireStorage } from '@angular/fire/storage';


@Component({
  selector: 'app-student-user',
  templateUrl: './student-user.component.html',
  styleUrls: ['./student-user.component.scss']
})

export class StudentUserComponent implements OnInit{
  students: any;
  students_data :any;
  public searchString: string;
  response: any;
  is_loading: any;
  ideas; any;
  term = '';
  //id: any[];


  constructor(
    public firebaseService: FirebaseService,
    private router: Router,
    public db: AngularFirestore,
    private storage: AngularFireStorage,
    public _auditTrailService:AuditTrailService
  ) { }


 ngOnInit() {

  this.getStudents()
  this.searchStudents(event)

}


getStudents() {
  this.students_data = this.db.collection('User', ref => ref.where('role', '==', 'student')).snapshotChanges().pipe(map(changes => {

  return changes.map(a => {
  const data: any = a.payload.doc.data();
  data.id = a.payload.doc.id;
  return data;
  });
  })
  );

  this.students_data.subscribe(
  res => {
  console.log(res);
  this.students = res;
  //this.blogs_snapshot = res;
  });

  }

  searchStudents(event){
    if (event.key === "Enter"){
      console.log(this.term)
      this.db.collection('User', ref => ref.where('full_name', '==', this.term)).valueChanges().subscribe(
      res => {
      this.response = res;
      console.log(this.response);

      this.ideas = res;
      this.is_loading = false;
        }
        );
    }
  }

  deleteStudent(value){
    this.db.collection('User').doc(value).delete().then( 
      res =>{
      console.log(res)
      this.students = res;
      const _audit_trail = {
        'action' : ' has deleted a student ',
        'object': res.id,
        'created_at': new Date(),
        'user':{
          'id': '4545454545454545454',
          'email':'daanyu@gmail.com' }
         } 
      console.log(_audit_trail)

      this._auditTrailService.createAuditTrailLog(_audit_trail)

    },

    err=>{
      console.log(err)
    }
    )
  }

} 

this is my error ... 这是我的错误...

ERROR in src/app/student-user/student-user.component.ts(87,23): error TS2339: Property 'id' does not exist on type 'void'.

Im using Firebase as my Database and this is what i expect returned in the db under my audit-trail model: 我使用Firebase作为数据库,这是我期望在audit-trail模型下的数据库中返回的内容:

action " has deleted a student" created_at July 22, 2019 at 5:49:33 PM UTC+3 user: email "daanyu@gmail.com" id "4545454545454545454" 操作“已删除学生”在UTC + 3用户于2019年7月22日下午5:49:33创建:电子邮件“ daanyu@gmail.com” id“ 4545454545454545454”

I have not worked with Firebase previously, but your error leads me to believe that the delete() method in Firestore does not return a success response since it implies res is of type void . 我以前没有使用过Firebase,但是您的错误使我相信Firestore中的delete()方法不会返回成功响应,因为它暗示res的类型为void You can use the id from this.students or this.response instead as per your use case. 您可以根据用例使用来自this.studentsthis.response的ID。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM