如何在Serverside ExpressJ上更改密钥名称API

问题描述

我要更改键“ _id”

using Newtonsoft.Json;   
using Dapper;
using System;
using System.Data.sqlClient;
using System.Collections.Generic;
                    
public class Program
{    
    public class OrderDetail
    {
        public int OrderDetailID { get; set; }
        public int OrderID { get; set; }
        public int ProductID { get; set; }
        public int Quantity { get; set; }
    }
    
    public class Result
    {
        public IEnumerable<OrderDetail> Orders { get; set; }
    }
    
    public static void Main()
    {
        string sql = "SELECT OrderID,Quantity FROM OrderDetails";

        using (var connection = new sqlConnection(fiddleHelper.GetConnectionStringsqlServerW3Schools()))
        {   
            var orderDetail = connection.Query<OrderDetail>(sql);
            var str = JsonConvert.SerializeObject(new Result { Orders = orderDetail },Formatting.Indented); 
            Console.WriteLine(str);     
        }
    }
}

到“ id”

{
    "_id": "5f3202ad5c79b21ee2d0d096","pid": "5f31f3388743e88451e9563c",}

这是我的{ "id": "5f3202ad5c79b21ee2d0d096",} 方法

GET

解决方法

只需放入它,然后删除旧密钥

import 'package:flutter/material.dart';
import 'dart:math' as math;

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',theme: ThemeData(
        primarySwatch: Colors.blue,visualDensity: VisualDensity.adaptivePlatformDensity,),home: MyHomePage(title: 'Flutter Demo Home Page'),);
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key,this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,children: <Widget>[
            Container(width: 400,height: 40,child: ProgressBarView(value: .9,)),Divider(),Container(width: 300,child: ProgressBarView(value: .7,Container(width: 100,child: ProgressBarView(value: .4,Text(
              'You have pushed the button this many times:',Text(
              '$_counter',style: Theme.of(context).textTheme.headline4,],floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,tooltip: 'Increment',child: Icon(Icons.add),);
  }
}

class ProgressBarView extends StatelessWidget {
  ProgressBarView({this.value});
  final value;
  final _iconSize = 30;

  @override
  Widget build(BuildContext context) {
    return Container(
      color: Color(0Xffe6e6e6),padding: EdgeInsets.only(left: 2,right: 2),child: Stack(fit: StackFit.loose,children: [
        LinearProgressIndicator(
            value: value,valueColor: AlwaysStoppedAnimation<Color>(Colors.red),backgroundColor: Colors.grey,minHeight: 40),LayoutBuilder(builder: (context,constrains) {
          //5 is just the right padding
          print(constrains.maxWidth);
          var leftPadding = constrains.maxWidth * value - _iconSize;
          var topPadding = (constrains.maxHeight - _iconSize) / 2;
          return Padding(
            padding: EdgeInsets.only(left: leftPadding,top: topPadding),child: Transform.rotate(
                angle: math.pi / 2,child: Icon(Icons.airplanemode_active,size: _iconSize.toDouble())),);
        })
      ]),);
  }
}

,

将此内容添加到您的Schema中,它将新方法覆盖默认方法(至JSON)。

Schema.method('toJSON',function () {
    const {_id,...object } = this.toObject();
    object.id = _id;
    return object;
 });
,

如果仅2个,则可以对其进行解构并重命名

router.get("/person",async (req,res) => {
  const { id: _id,pid } = await Person.find();
  res.send({ id,pid });
});