我们可以像在MongoDb的方法中那样在typeorm的findOne中使用投影仪吗?

时间:2019-07-19 11:24:02

标签: nestjs typeorm

我只是好奇我们是否可以使用typeorm的findOne方法提供投影仪?我正在使用postgres数据库。

我需要的只是提供的电子邮件的表格中的ID。我得到的是用户的所有详细信息。

repository.findOne({email: 'abc@abc.com'})

这给了我所有细节。但是我只想提取该特定用户的ID

我们可以将投影仪传递给上述查询吗?例如

repository.findOne({email: 'email'},{id:1})

1 个答案:

答案 0 :(得分:0)

是的,有可能。您需要将选项传递给import UserNotifications import UIKit class ViewController: UIViewController { @IBOutlet weak var EarlyTimePicker: UITextField! @IBOutlet weak var LateTimePicker: UITextField! @IBOutlet weak var NumQuestions: UITextField! @IBOutlet weak var myLabel_Questions: UILabel!// Attached to the label box @IBOutlet weak var myLabel_StartEndTime: UILabel! @IBOutlet weak var myLabel_TestResetTime: UILabel! @IBOutlet weak var myLabel_CurrentEarlyTime: UILabel! private var earlyTimePicker: UIDatePicker? private var lateTimePicker: UIDatePicker? override func viewDidLoad() { super.viewDidLoad() let center = UNUserNotificationCenter.current() center.requestAuthorization(options: [.alert, .badge, .sound]) { (granted, error) in //ask for permission in order to show messages on the lock screen if granted { print("Yay!") } else { print("D'oh") } } earlyTimePicker = UIDatePicker() earlyTimePicker?.datePickerMode = .time //change to .time earlyTimePicker?.addTarget(self, action: #selector(ViewController.earlyTimeChanged(earlyTimePicker:)),for: .valueChanged) lateTimePicker = UIDatePicker() lateTimePicker?.datePickerMode = .time //change to .time lateTimePicker?.addTarget(self, action: #selector(ViewController.lateTimeChanged(lateTimePicker:)),for: .valueChanged) let tapGesture = UITapGestureRecognizer(target: self, action: #selector(ViewController.viewTapped(gestureRecognizer:))) view.addGestureRecognizer(tapGesture) EarlyTimePicker.inputView = earlyTimePicker LateTimePicker.inputView = lateTimePicker } @objc func viewTapped(gestureRecognizer: UITapGestureRecognizer){ view.endEditing(true) } var earlyTime=480 var earlyTimehour=0 var earlyTimeminute=0 @objc func earlyTimeChanged(earlyTimePicker: UIDatePicker){ let earlyTimeFormatter = DateFormatter() earlyTimeFormatter.dateFormat = "h:mm a" earlyTimeFormatter.amSymbol = "AM" earlyTimeFormatter.pmSymbol = "PM" EarlyTimePicker.text = earlyTimeFormatter.string(from: earlyTimePicker.date) view.endEditing(true) let earlyTimedate = earlyTimePicker.date let earlyTimecomponents = Calendar.current.dateComponents([.hour, .minute], from: earlyTimedate) earlyTimehour = earlyTimecomponents.hour! earlyTimeminute = earlyTimecomponents.minute! earlyTime = earlyTimecomponents.hour! * 60 + earlyTimecomponents.minute! print("earlyTimehour: \(earlyTimecomponents.hour!)") print("earlyTimeminute: \(earlyTimecomponents)") print("earlyTime: \(earlyTime)") print("Current Time: \(Date())") } var lateTime=1200 var lateTimehour=0 var lateTimeminute=0 @objc func lateTimeChanged(lateTimePicker: UIDatePicker){ let lateTimeFormatter = DateFormatter() lateTimeFormatter.dateFormat = "h:mm a" lateTimeFormatter.amSymbol = "AM" lateTimeFormatter.pmSymbol = "PM" LateTimePicker.text = lateTimeFormatter.string(from: lateTimePicker.date) view.endEditing(true) let lateTimedate = lateTimePicker.date let lateTimecomponents = Calendar.current.dateComponents([.hour, .minute], from: lateTimedate) lateTimehour = lateTimecomponents.hour! lateTimeminute = lateTimecomponents.minute! lateTime = lateTimecomponents.hour! * 60 + lateTimecomponents.minute! let testMinute = lateTime % 60 let testHour = lateTime / 60 print("lateTimehour: \(lateTimecomponents.hour!)") print("lateTimeminute: \(lateTimecomponents)") print("lateTime: \(lateTime)") print("testHour: \(testHour)") print("testMinute: \(testMinute)") myLabel_TestResetTime.text = "Time Set \(Date())" myLabel_CurrentEarlyTime.text = "Current Early Time: \(earlyTime) / OnOff: \(OnOff)" } let PickedString = ["One","Two","Three","Four", "Five","Six","Seven","Eight"] // @IBAction func TestCallFunction(_ sender: UIButton) { // scheduleLocal() // } //NEED TO REPEAT THIS FUNCTION AT EARLY TIME - 10 //need to stop repeating with a cancel button (while bool true, do it, while false, stop. Default is false) var RunDaily: Timer? var OnOff = false var QuestionNum = 1 @IBAction func Launch(_ sender: UIButton) { OnOff = true let center = UNUserNotificationCenter.current() center.removeAllPendingNotificationRequests() guard let QuestionNumA = Int(NumQuestions.text!) else { //This is how to get the UserInterface VALUE as a number print("not a number!: \(String(describing: NumQuestions.text))") return } print("Number of Questions: \(QuestionNumA)") // var QuestionNum = 1 if QuestionNumA > 10 {QuestionNum=10} else {QuestionNum=QuestionNumA} print("QuestionNumA:\(QuestionNumA) vs QuestionNum: \(QuestionNum)") printStuff() showMessage() } @IBAction func Stop(_ sender: UIButton) { OnOff = false printStuff() } func printStuff() { if OnOff == true { print("Bool is On : \(OnOff)") RunDaily = Timer.scheduledTimer(timeInterval: 86400, target: self, selector: #selector(showMessage), userInfo: nil, repeats: true)//86400 } if OnOff == false { print("Bool is Off : \(OnOff)") RunDaily?.invalidate() let center = UNUserNotificationCenter.current() center.removeAllPendingNotificationRequests() } } func SaveDefaultData(){ // THis is the structure to SAVE input data for when the app relaunches (causes error when run. let defaults = UserDefaults.standard defaults.set("Date()", forKey:"key1") //defaults.set(earlyTimePicker, forKey:"earlyTimePickerSet") cannot set earlyTimePicker. causes crash // defaults.set(lateTimePicker, forKey:"lateTimePickerSet") defaults.set(earlyTime, forKey:"earlyTimeSet") defaults.set(lateTime, forKey:"lateTimeSet") defaults.set(QuestionNum, forKey:"QuestionNumSet") } func SetDefaultData(){// THis is the structure to Set input for when the app relaunches let defaults = UserDefaults.standard if let savedValue = defaults.string(forKey: "key1"){ print("Here you will get saved value \(savedValue)") } else { print("No value in Userdefault,Either you can save value here or perform other operation") defaults.set("Here you can save value", forKey: "key1") } if let earlyTimeValue = defaults.string(forKey: "earlyTimeSet"){ print("Here you will get saved value \(earlyTimeValue)") earlyTime = UserDefaults.standard.value(forKey: "earlyTimeSet") as? Int ?? 485 } else { print("No value in Userdefault,Either you can save value here or perform other operation") defaults.set("Here you can save value", forKey: "earlyTimeSet") earlyTime = 500 } if let lateTimeValue = defaults.string(forKey: "lateTimeSet"){ print("Here you will get saved value \(lateTimeValue)") lateTime = UserDefaults.standard.value(forKey: "lateTimeSet") as? Int ?? 1265 } else { print("No value in Userdefault,Either you can save value here or perform other operation") defaults.set("Here you can save value", forKey: "lateTimeSet") lateTime = 1230 } if let QuestionNumValue = defaults.string(forKey: "QuestionNumSet"){ print("Here you will get saved value \(QuestionNumValue)") QuestionNum = UserDefaults.standard.value(forKey: "QuestionNumSet") as? Int ?? 4 } else { print("No value in Userdefault,Either you can save value here or perform other operation") defaults.set("Here you can save value", forKey: "QuestionNumSet") QuestionNum = 2 } } @objc func showMessage() { let center = UNUserNotificationCenter.current() if lateTime <= earlyTime { lateTime = earlyTime+1 if earlyTimehour <= 12 { LateTimePicker.text = "\(earlyTimehour):\(earlyTimeminute) AM" } if earlyTimehour > 12 { let EarlyTimeAfternoon = earlyTimehour - 12 LateTimePicker.text = "\(EarlyTimeAfternoon):\(earlyTimeminute) PM" } } // center.removeAllPendingNotificationRequests() // THIS IS WHERE ALL THE USER INPUT GETS INTO THE PROGRAM // // guard let QuestionNumA = Int(NumQuestions.text!) else { //This is how to get the UserInterface VALUE as a number // print("not a number!: \(String(describing: NumQuestions.text))") // return // } //print("Number of Questions: \(QuestionNumA)") // THIS IS WHERE ALL THE USER INPUT GETS INTO THE PROGRAM // var RandHourArray:[Int] = [0] var RandMinArray:[Int] = [0] var RandQuestionArray:[Int] = [0] var Counter = 1 // var QuestionNum = 1 //if QuestionNumA > 2 {QuestionNum=10} else {QuestionNum=QuestionNumA} // print("QuestionNumA:\(QuestionNumA) vs QuestionNum: \(QuestionNum)") for _ in 0 ... QuestionNum-1{ // Pick random times for badges //let RandHour = Int.random(in: earlyTimehour ... lateTimehour) let RandTimeMinFromMidnight = Int.random(in: self.earlyTime ... self.lateTime) let ConvertRandTimeHours = RandTimeMinFromMidnight / 60 let ConvertRandTimeMinutes = RandTimeMinFromMidnight % 60 RandHourArray.append(ConvertRandTimeHours) //let RandMin = Int.random(in: earlyTimeminute ... lateTimeminute) RandMinArray.append(ConvertRandTimeMinutes) let RandQuestion = Int.random(in: 0 ... self.PickedString.count-1) RandQuestionArray.append(RandQuestion) //print("RandTimeMinFromMidnight: \(RandTimeMinFromMidnight)") // print("RandHourArray: \(RandHourArray)") // print("ConvertRandTimeHours: \(ConvertRandTimeHours)") // print("RandMinArray: \(RandMinArray)") // print("ConvertRandTimeMinutes: \(ConvertRandTimeMinutes)") } myLabel_Questions.text = "# of questions: \(QuestionNum)"//\(QuestionNumA)" myLabel_StartEndTime.text = "Start Time \(earlyTime) / End Time \(lateTime)" let content_A = UNMutableNotificationContent() content_A.title = "Prompt" content_A.body = self.PickedString[RandQuestionArray[Counter]] // content_A.categoryIdentifier = "alarm" content_A.userInfo = ["customData": "fizzbuzz"] content_A.sound = UNNotificationSound.default var dateComponents_A = DateComponents() dateComponents_A.hour = RandHourArray[Counter] dateComponents_A.minute = RandMinArray[Counter] let trigger_A = UNCalendarNotificationTrigger(dateMatching: dateComponents_A, repeats: false) let request_A = UNNotificationRequest(identifier: UUID().uuidString, content: content_A, trigger: trigger_A) center.add(request_A) print("Request A time: \(RandHourArray[Counter]) : \(RandMinArray[Counter])") print("Question String picked A: \(self.PickedString[RandQuestionArray[Counter]])") Counter=2 if Counter<=QuestionNum { let content_B = UNMutableNotificationContent() content_B.title = "Prompt" content_B.body = self.PickedString[RandQuestionArray[Counter]] content_B.categoryIdentifier = "alarm" content_B.userInfo = ["customData": "fizzbuzz"] content_B.sound = UNNotificationSound.default var dateComponents_B = DateComponents() dateComponents_B.hour = RandHourArray[Counter] dateComponents_B.minute = RandMinArray[Counter] let trigger_B = UNCalendarNotificationTrigger(dateMatching: dateComponents_B, repeats: false) let request_B = UNNotificationRequest(identifier: UUID().uuidString, content: content_B, trigger: trigger_B) center.add(request_B) print("Request B time: \(RandHourArray[Counter]) : \(RandMinArray[Counter])") print("Question String picked B: \(self.PickedString[RandQuestionArray[Counter]])") } } } 函数,以便您的代码如下所示:

findOne

OR

async getOne(email: string): Partial<RepositoryEntity> {
  const foundRow = repository.findOne({
    where: {
      email: email
    },
    select: 'id'
  });
  return foundRow;
}

您可以看到在其中定义类型的源代码http://www.stephensengineering.com/stephens33/