Как импортировать пользовательский скаляр в файл .graphql в NestJs?

Вы можете использовать следующий подход.

Удалите следующие строки из вашего кода:

//get our entity class
StoreData storeDate;

Как изначально не будет экземпляра StoreData, доступного прямо сейчас.

Теперь объявите новые переменные например:

String storeNumber;
String repName;
String repCell;
DateTime transactionDate;

И затем присваивать им значения формы в методе onSaved. Поэтому, когда ваша форма будет отправлена, эти значения будут использоваться для создания новой StoreData, и она будет передана на вторую страницу.

Вот код для вашего файла main.dart:

    import 'package:flutter/material.dart';

import 'FeedBack.dart';
import 'StoreData.dart';

void main() {
  runApp(MaterialApp(
    title: 'Navigation Basics',
    home: FirstScreen(),
  ));
}


// get variables from entity class
String storeNumber;
String repName;
String repCell;
DateTime transactionDate = DateTime.now();

class FirstScreen extends StatefulWidget {
  @override
  _FirstScreenState createState() => _FirstScreenState();
}

class _FirstScreenState extends State<FirstScreen> {
  GlobalKey<FormState> _key = GlobalKey();
  bool _validate = false;

  _sendData() {

    _key.currentState.save();

    Navigator.push(
      context,
      MaterialPageRoute(
          builder: (context) => FeedBack(
              storeData: StoreData(
                  storeNumber, repName, repCell, transactionDate))),
    );
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: new Text('Test App'),
        ),
        body: new SingleChildScrollView(
          child: new Container(
            margin: new EdgeInsets.all(15.0),
            child: new Form(
              key: _key,
              autovalidate: _validate,
              child: formUI(),
            ),
          ),
        ),
      ),
    );
  }

  Widget formUI() {
    return new Column(
      children: <Widget>[
        new TextFormField(
            decoration: new InputDecoration(hintText: 'Store Number'),
            keyboardType: TextInputType.number,
            validator: validateRepCell,
            onSaved: (String val) {
              storeNumber = val;
            }),
        new TextFormField(
            decoration: new InputDecoration(hintText: 'Rep Full Name'),
            validator: validateRepName,
            onSaved: (String val) {
              repName = val;
            }),
        new TextFormField(
            decoration: new InputDecoration(hintText: 'Rep Phone Number'),
            keyboardType: TextInputType.number,
            validator: validateRepCell,
            onSaved: (String val) {
              repCell = val;
            }),
        new SizedBox(height: 15.0),
        new RaisedButton(
          onPressed: _sendData,
          child: new Text('Proceed'),
        )
      ],
    );
  }

// Validate Fields

  String validateRepCell(String value) {
    // String patttern = r'(^[a-zA-Z ]*$)';
    RegExp regExp = new RegExp(r'^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$');
    if (value.length == 0) {
      return "Store Number  is Required";
    } else if (!regExp.hasMatch(value)) {
      return "Store Number must be only have numbers";
    }
    return null;
  }

  String validateRepName(String value) {
    String patttern = r'(^[a-zA-Z ]*$)';
    RegExp regExp = new RegExp(patttern);
    if (value.length == 0) {
      return "Rep Name is Required";
    } else if (!regExp.hasMatch(value)) {
      return "Name must be a-z and A-Z";
    }
    return null;
  }


}
3
задан Crewnie Master 19 January 2019 в 03:59
поделиться

1 ответ

У меня была эта проблема, и я решил ее следующим образом:

  • Во-первых, я сделал общий модуль, чтобы установить DateScalar в качестве поставщика, а также экспортировать его:
[ 110]
  • Позже я импортировал общий модуль в модуль кошек, чтобы DateScalar был доступен по всему модулю кошек.

  • И, наконец, я установил следующую строку внутри cats.graphql:



    scalar Date

    type Cat {
      id: Int
      name: String
      age: Int
      birthday: Date
    }

Обратите внимание, что значение Scale Date в файле cats.graphql должно соответствовать значение установлено в @Scalar ('Date') в файле date.scalar.ts

0
ответ дан Ing Alejandro Villalon 19 January 2019 в 03:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: