在本文中,您将会了解到关于typescript类型、接口、类、泛型综合使用的新资讯,同时我们还将为您解释定义一个操作数据库的库,支持MysqlMssqlMongoDB的相关在本文中,我们将带你探索ty
在本文中,您将会了解到关于typescript 类型、接口、类、泛型综合使用的新资讯,同时我们还将为您解释定义一个操作数据库的库,支持 Mysql Mssql MongoDB的相关在本文中,我们将带你探索typescript 类型、接口、类、泛型综合使用的奥秘,分析定义一个操作数据库的库,支持 Mysql Mssql MongoDB的特点,并给出一些关于2020 你应该知道的 TypeScript 学习路线【Typescript 基础介绍】、ArgumentException:MongoDB + Unity2D 中的无效关键字 'mongodb+srv://test:test@HOST' - Live MongoDB 未连接、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?、Docker 容器PHP + MongoDB 扩展 + `phpdotenv` mongodb/mongodb 1.9.0-alpha1 需要 ext-mongodb ^1.10.0 -> 它从您的系统中丢失的实用技巧。
本文目录一览:- typescript 类型、接口、类、泛型综合使用(定义一个操作数据库的库,支持 Mysql Mssql MongoDB)
- 2020 你应该知道的 TypeScript 学习路线【Typescript 基础介绍】
- ArgumentException:MongoDB + Unity2D 中的无效关键字 'mongodb+srv://test:test@HOST' - Live MongoDB 未连接
- centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?
- Docker 容器PHP + MongoDB 扩展 + `phpdotenv` mongodb/mongodb 1.9.0-alpha1 需要 ext-mongodb ^1.10.0 -> 它从您的系统中丢失
typescript 类型、接口、类、泛型综合使用(定义一个操作数据库的库,支持 Mysql Mssql MongoDB)
-
要求:MySQL MSSQL MongoDB 功能一样,都有 add、update、delete、get 方法。
-
注意:约束统一的规范、以及代码重用
-
解决方案:需要约束规范所以要定义接口,需要代码重用所以用到泛型
- 接口:在面向对象的编程中,接口是一种定义规范的定义,他定义了行为和动作的规范
- 泛型通俗的理解:泛型就是解决类、接口、方法的复用性
//定义接口 interface DBI<T>{ add(info:T):boolean; update(info:T,id:number):boolean; delete(id:number):boolean; get(id:number):any[]; } //定义一个操作mysql数据库的类 注意:要实现泛型接口,这个类应该也是泛型类 class MysqlDb<T> implements DBI<T>{ add(info:T):boolean{ console.log(info); return true; } update(info:T,id:number):boolean{ } delete(id:number):boolean{ } get(id:number):any[]{ var list =[{ title:"xx", desc:"xxxxx" },{ title:"xx", desc:"xxxxx" }] return list; } } //定义一个操作mssql数据库的类 class MssqlDb<T> implements DBI<T>{ constructor(){ console.log("数据库建立连接"); } add(info:T):boolean{ console.log(info); return true; } update(info:T,id:number):boolean{ } delete(id:number):boolean{ } get(id:number):any[]{ var list =[{ title:"xx", desc:"xxxxx" },{ title:"xx", desc:"xxxxx" }] return list; } } //操作用户表 定义一个user类和数据表做映射 class User{ username:string|undefined; password:string|undefined; } //实例化user var u = new User(); u,username="aaa"; u.pasword="123123"; var oMysql = new MysqlDb<User>(); oMysql.add(u);//{username:"aaa",pasword:"123123"} var oMssql = new MssqlDb<User>(); oMssql.add(u);//{username:"aaa",pasword:"123123"} //获取User表 id=4的数据 var data = oMssql.get(4); console.log(data);//
(简单的模拟数据库,可以自己扩展)
2020 你应该知道的 TypeScript 学习路线【Typescript 基础介绍】
公众号:前端微服务
GitHub:https://github.com/yongbolu
作 者:子奕
一、概述
随着 Vue3 用 TypeScript 的重构与发布,作为 JavaScript 类型超集的 TypeScript,以可以编译成 JavaScript,可以在任何浏览器、任何计算机和任何操作系统上运行,并且开源,被再一次被推向了前端开发语言的巅峰,为了顺应时代的变化,争取成为与时俱进的开发者,小编今天从 Typescript 的概念、由来以及优缺点方面进行系统的讲解,希望为学习路上的大家提供一点点帮助,如果大家觉得有帮助,记得给小编点个赞,如果想获取更多干货请关注前端微服务公众号,不定期为大家带来干货。
二、TypeScript 是什么?
说到 TypeScript 一定离不开熟悉的 JavaScript,JavaScript 本身就是一门优秀且强大的编程语言。既然 JavaScript 已经这么优秀,为什么还要使用 TypeScript 呢,这要从 JavaScript 的缺点入手,在早期由于 JavaScript 是弱类型语言,在开发过程中如果书写代码不严谨,就会出现各种各样的 bug,导致代码质量下降,为了预防这种问题的出现,Facebook 出品的一个用于 JavaScript 代码的静态类型检查工具。用于找出 JavaScript 代码中的类型错误。Flow 采用 OCaml 语言开发。正是由于这种问题的存在,在很长一段时间内 JavaScript 被贴上了无类型的标签,但由于近几年 Node 的出现,推动了前端工程化和自动化以及三大框架 (Angular、React、Vue) 的发展,把前端推向了一个更高的起点,Node.js 之父瑞安达尔(Ryan Dahl)发布了新的开源项目 deno,而该项目最终是要提供一个安全的 TypeScript 运行环境。
三、为什么要学习 TypeScript?
-
拥有强大的靠山,分别为微软与谷歌。TypeScript 是由微软开发的,谷歌的 Angular 框架是用 Typescript 开发的。所以 TypeScript 很有可能是未来的前端脚本语言发展的主流方向。 -
三大主流框架中,Vue 3.0 源码全部用 typescript 重写。 -
TypeScript 是微软在 2012 年开发的一门免费开源的编程语言。它是 JavaScript 的一个超集(增强版)。它在 JS 原来的基础上增加了一套十分强大的类型系统,从而可以让小伙伴们在写代码的时候获得更加丰富的语法提示。在代码的编译阶段也可以通过类型系统的检查,从而有效避免一些线上错误。 -
TypeScript 是一门比 Java 更 Script 的编程语言。也就是说 TypeScript 具有真正的面向对象编程思想,你可以采用它来完成更加大型复杂的应用。 -
TypeScript 始于 JavaScript 终于 JavaScript。也就是说 TypeScript 遵循 JavaScript 的语法和语义,任何 Js 都可以在 Ts 内运行,但 TypeScript 它不可以直接在浏览器中运行,必须要将其转换为 JavaScript。
四、环境搭建
因为 TypeScript 在 JavaScript 的基础上增加了类型系统,所以 TypeScript 不能够直接在浏览器当中运行。我们需要使用编译器将 TypeScript 编译为 JavaScript。因为 TypeScript 编译为 JavaScript 需要 Node 环境的支持,所以在编译前请保证你本地已经安装 Node 运行环境。
4.1 全局安装 TypeScript
$ npm install typescript -g
# OR
$ yarn global add typescript
查看 TypeScript 版本
$ tsc --version
4.2 编写 TypeScript 代码
所有 TypeScript 代码全部以。为后缀
-
创建 index.ts 文件
// index.ts
const name:string = "xunzhaotech.com";// string 为设置变量类型
console.log(name);
-
编译将 index.ts 文件
$ tsc index.ts
-
在文件夹内多出一个名字为 index.js 的文件 -
接下来按照 js 的方式运行
$ node index.js
五、推荐阅读
-
官网:https://www.typescriptlang.org -
中文:http://www.tslang.cn -
官方博客:https://blogs.msdn.microsoft.com/typescript
六、关注我们
点击下方关注我
本文分享自微信公众号 - 前端微服务(micro_frontend)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与 “OSC 源创计划”,欢迎正在阅读的你也加入,一起分享。
ArgumentException:MongoDB + Unity2D 中的无效关键字 'mongodb+srv://test:test@HOST' - Live MongoDB 未连接
如何解决ArgumentException:MongoDB + Unity2D 中的无效关键字 ''mongodb+srv://test:test@HOST'' - Live MongoDB 未连接?
我试图在本地连接我的 Live MongoDB 数据库,但在我使用外部字符串而不是 localhost
时出错
我使用:
- MongoDB 数据库 v4.0.x(使用 mongoDB 的免费集群)
- Unity 2020.3.13
如果我使用 localhost,即使所有的插入、更新、删除查询都能正常工作,这段代码也能正常工作
using UnityEngine;
using UnityEngine.UI;
using MongoDB.Bson;
using MongoDB.Driver;
using System.Collections;
using UnityEngine.Networking;
using MongoDB.Driver.Builders;
using UnityEngine.SceneManagement;
using System;
using Newtonsoft.Json ;
public class Login_Screen : MonoBehavIoUr {
public InputField usernameedit;
public InputField passwordone;
public Button loginButton;
void start(){
string connectionString = "mongodb://localhost:27017";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("admin");
var playercollection = database.GetCollection<BsonDocument>("users");
}
}
但是我用于 LIVE 数据库调用的相同内容,然后导致以下错误。甚至连不上。
string connectionString = "mongodb+srv://testUsername:testPassword@testClustor.mongodb.net?retryWrites=true&w=majority";
错误信息如下:
ArgumentException: Invalid keyword ''mongodb+srv://testusername:testpassword@xyz.xxx.mongodb.net/admin1?w''. MongoDB.Driver.MongoConnectionStringBuilder.set_Item (System.String keyword,System.Object value) (at <6da29fc855c44d33ad78b3e27475ff27>:0) System.Data.Common.DbConnectionStringBuilder.set_ConnectionString (System.String value) (at <290425a50ff84a639f8c060e2d4530f6>:0) MongoDB.Driver.MongoConnectionStringBuilder..ctor (System.String connectionString) (at <6da29fc855c44d33ad78b3e27475ff27>:0) MongoDB.Driver.MongoClient.ParseConnectionString (System.String connectionString) (at <6da29fc855c44d33ad78b3e27475ff27>:0) MongoDB.Driver.MongoClient..ctor (System.String connectionString) (at <6da29fc855c44d33ad78b3e27475ff27>:0) Login_Screen.DoLogin () (at Assets/Script/Login_Screen.cs:61) UnityEngine.Events.InvokableCall.Invoke () (at <24599fe2776145d58ab771516c063d56>:0) UnityEngine.Events.UnityEvent.Invoke () (at <24599fe2776145d58ab771516c063d56>:0) UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:68) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:110) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler,UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:50) UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target,UnityEngine.EventSystems.BaseEventData eventData,UnityEngine.EventSystems.ExecuteEvents+EventFunction1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:262) UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:385)
我真的浪费了 2 天的时间来寻找解决方案,请任何人帮助我。提前致谢
解决方法
我遇到了同样的问题。检查您的 db 和 db 用户的设置 - 确保它们可以从外部 IP 访问。
我像这样修改了我的连接字符串:
private readonly Dictionary<string,string> _config = new Dictionary<string,string>()
{
{"dbUser","xxxxxx"},{"dbName","YourDbName"},{"password","xxxxxxxxxxxxx"}
};
public IMongoDatabase CreateInstance()
{
var client = new MongoClient($"mongodb+srv://{_config["dbUser"]}:{HttpUtility.UrlEncode(_config["password"])}@pocdata.0u29g.mongodb.net/{HttpUtility.UrlEncode(_config["dbName"])}?retryWrites=true&w=majority");
return client.GetDatabase(_config["dbName"]);
}
我只是使用公共方法连接到数据库,但这不是强制性的 - 您可以直接替换值 - 只需对密码和数据库名称进行 url 编码
centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?
centos7 设置 mysql 自启动的配置文件中
[Unit] Description=MySQL Server Documentation=man:mysqld(8) Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html After=network.target After=syslog.target [Install] WantedBy=multi-user.target [Service] User=mysql Group=mysql ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf LimitNOFILE = 5000 #Restart=on-failure #RestartPreventExitStatus=1 #PrivateTmp=false
这里的
[Service]
User=mysql
Group=mysql,
user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?还是其他呢?
Docker 容器PHP + MongoDB 扩展 + `phpdotenv` mongodb/mongodb 1.9.0-alpha1 需要 ext-mongodb ^1.10.0 -> 它从您的系统中丢失
如何解决Docker 容器PHP + MongoDB 扩展 + `phpdotenv` mongodb/mongodb 1.9.0-alpha1 需要 ext-mongodb ^1.10.0 -> 它从您的系统中丢失
我想要一个用于 PHP 的运行 Docker 容器,它可以与 MongoDB Atlas 数据库进行远程交互。
我已经硬编码并手动修复了自定义 Docker 映像以使 MongoDB 扩展正常工作。现在在扩展它以包含 vlucas/PHPdotenv
composer 包时遇到问题。研究其他位置,似乎还有其他方法可以运行单独的 composer
容器并映射相关驱动器:
https://hackernoon.com/get-composer-to-run-on-docker-container-a-how-to-guide-y86g36z7
但是我无法使用 PHP:8.0-apache
图像或我自己的自定义图像来运行它。
自定义图像构建为:
FROM PHP:8.0-apache
RUN apt-get update -y && apt-get upgrade -y && apt-get install git libssl-dev -y
RUN pecl install mongodb && docker-PHP-ext-enable mongodb
RUN echo "extension=mongodb.so" >> /usr/local/etc/PHP/PHP.ini
copY --from=composer /usr/bin/composer /usr/bin/composer
EXPOSE 80 443
docker-compose.yml
,使用我上面的自定义图片,是:
version: ''2''
services:
PHP:
image: redswitch/PHP-mongodb:8.0-1.9.0-3
container_name: PHP
volumes:
- ./html:/var/www/html
restart: always
environment:
- VIRTUAL_HOST=www.domain.com
- LETSENCRYPT_HOST=www.domain.com
- LETSENCRYPT_EMAIL=admin@domain.com
- "TZ=Europe/London"
ports:
- 80
expose:
- 80
restart: unless-stopped
composer:
image: composer:2.0
command: ["composer","install"]
volumes:
- ./html:/app
networks:
default:
external:
name: Nginx-proxy-net
在 ./html
的位置是 composer.json
:
{
"require": {
"mongodb/mongodb": "^1.9.0-alpha1","vlucas/PHPdotenv": "^5.3.0"
}
}
我尝试了不同的最低版本,例如 ^1.8.0
、^1.9.0
和以上。这会根据 composer.json
文件中指定的版本提供相同错误消息的差异。
composer
容器按预期启动和停止。这是容器的日志:
No composer.lock file present. Updating dependencies to latest instead of installing from lock file. See https://getcomposer.org/install for more information.,Loading composer repositories with package information,Updating dependencies,Your requirements Could not be resolved to an installable set of packages.,Problem 1,- Root composer.json requires mongodb/mongodb ^1.9.0-alpha1 -> satisfiable by mongodb/mongodb[1.9.0-alpha1].,- mongodb/mongodb 1.9.0-alpha1 requires ext-mongodb ^1.10.0 -> it is missing from your system. Install or enable PHP''s mongodb extension.,To enable extensions,verify that they are enabled in your .ini files:,- /usr/local/etc/PHP/PHP-cli.ini,- /usr/local/etc/PHP/conf.d/docker-PHP-ext-sodium.ini,- /usr/local/etc/PHP/conf.d/docker-PHP-ext-zip.ini,You can also run `PHP --ini` inside terminal to see which files are used by PHP in CLI mode.,
使用 PHP
调用检查 PHPinfo()
容器,我可以看到 MongoDB 扩展 v1.9.0 已启用,加载的配置文件和附加配置位于:
- /usr/local/etc/PHP/PHP.ini
- /usr/local/etc/PHP/conf.d/docker-PHP-ext-mongodb.ini,/usr/local/etc/PHP/conf.d/docker-PHP-ext-sodium.ini立>
我该如何解决这个问题?
这是部署 PHP+MongoDB+Composer+PHPDotEnv 的正确方式吗?
关于typescript 类型、接口、类、泛型综合使用和定义一个操作数据库的库,支持 Mysql Mssql MongoDB的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于2020 你应该知道的 TypeScript 学习路线【Typescript 基础介绍】、ArgumentException:MongoDB + Unity2D 中的无效关键字 'mongodb+srv://test:test@HOST' - Live MongoDB 未连接、centos7 设置 mysql 自启动的配置文件中 [Service] User=mysql Group=mysql,user 和 group 这边的 mysql 是指的什么?centos 的登录用户名?、Docker 容器PHP + MongoDB 扩展 + `phpdotenv` mongodb/mongodb 1.9.0-alpha1 需要 ext-mongodb ^1.10.0 -> 它从您的系统中丢失的相关信息,请在本站寻找。
本文标签: