我正在使用Flask建立一个网站,我在其中使用WTForms.在表单中,我现在想要使用FormFields的FieldList,如下所示:
class LocationForm(Form):
location_id = StringField('location_id')
city = StringField('city')
class CompanyForm(Form):
company_name = StringField('company_name')
locations = FieldList(FormField(LocationForm))
Run Code Online (Sandbox Code Playgroud)
所以让人们有能力进入一个有两个地点的公司(动态添加地点的时间比较晚)我在前面这样做:
<form action="" method="post" role="form">
{{ companyForm.hidden_tag() }}
{{ companyForm.company_name() }}
{{ locationForm.location_id() }}
{{ locationForm.city() }}
{{ locationForm.location_id() }}
{{ locationForm.city() }}
<input type="submit" value="Submit!" />
</form>
Run Code Online (Sandbox Code Playgroud)
所以在提交时我打印的位置:
print companyForm.locations.data
Run Code Online (Sandbox Code Playgroud)
但我明白了
[{'location_id': u'', 'city': u''}]
Run Code Online (Sandbox Code Playgroud)
我可以使用locationForm打印第一个位置的值(见下文),但我仍然不知道如何获取第二个位置的数据.
print locationForm.location_id.data
print locationForm.city.data
Run Code Online (Sandbox Code Playgroud)
所以位置列表确实有一个带空值的dict,但是:
有谁知道我在这里做错了什么?欢迎所有提示!
我有一个问题让firebase 3.0.1工作.我觉得这与我的webpack设置有关.我的文件在下面.当使用webpack dev服务器运行我的应用程序时,我收到错误:
未捕获的TypeError:firebase.initializeApp不是函数
有趣的是,如果我debugger;在var firebase = require('firebase');它之后放一个或断点似乎是一个空对象.
webpack.config.js
const webpack = require("webpack");
module.exports = {
entry: './src/index.js',
output: {
path: 'public',
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.js$/,
exclude: /node_modules/,
loader: 'babel-loader?presets[]=es2015&presets[]=react'
}]
},
plugins: process.env.NODE_ENV === 'production' ? [
new webpack.optimize.DedupePlugin(),
new webpack.optimize.OccurrenceOrderPlugin(),
new webpack.optimize.UglifyJsPlugin()
] : []
};
Run Code Online (Sandbox Code Playgroud)
的package.json
{
"name": "burn",
"version": "1.0.0",
"description": "burn messaging",
"main": "index.js",
"scripts": {
"start": "if-env NODE_ENV=production && npm run start:prod || npm run …Run Code Online (Sandbox Code Playgroud) 在我的Angular2-typescript应用程序中,我只使用forkJoin在所有并行HTTP调用完成后返回一个Observable.
问题:订阅回调一直无限期地执行
这是我的代码:
http.service
import {Http} from "@angular/http";
constructor (private _http: HTTP) {}
makeGetRequest(....) {
return this._http.get(URL)
.map (res => res.json)
.toPromise();
Run Code Online (Sandbox Code Playgroud)
my.service
import {Observable} from "rxjs/Observable";
import {HttpService} from "http.service"
constructor (private _httpService: HttpService) {}
myMethod(): Observable<any[]> {
return Observable.forkJoin(
this._httpService.makeGetRequest(
URL1
),
this._httpService.makeGetRequest(
URL2
)
)
}
Run Code Online (Sandbox Code Playgroud)
my.component
import MyService from "my.service";
import Subscription from "rxjs";
constructor (private _service: MyService) {}
mySub: Subscription;
ngOnInit() {
this.mySub = this._service.myMethod.subscribe(data => {
data.forEach(console.log(data));
this.mySub.unsubscribe();
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过(同样的问题):
有没有办法根据其UID获取用户信息(如电子邮件,图片)?
我的意思是不是当前登录的用户,而是任何其他用户.
新文档提供了一种初始化 firebase 的简单方法,例如,此片段直接来自文件README.md:
安装 Firebase npm 模块:
$ npm init
$ npm install --save firebase在您的代码中,您可以使用以下方式访问 Firebase:
var firebase = require('firebase');
var app = firebase.intializeApp({ ... });
// ...
但在我的安装中,这不起作用,如,firebase为空({}当控制台登录时)。
文档中还有一个名为“仅包含您需要的功能”的部分,其中提供了以下代码片段:
var firebase = require('firebase/app');
require('firebase/auth');
require('firebase/database');
var app = firebase.initializeApp({ ... });
// ...
Run Code Online (Sandbox Code Playgroud)
这种方法对我有用,所以我想知道我首先做错了什么?
我正在使用browserify,如果这有帮助的话,但文档指出:浏览器版本设计为与包捆绑器(例如Browserify、
Webpack)一起使用。
我正在将 firebase 与电子邮件+密码身份验证提供商一起使用。正确的凭据情况可以按预期工作。我的问题是,如果凭据错误,则会捕获错误,但我不知道如何传回此信息。
我正在将 redux store 的调度与mapDispatchToProps.
const mapDispatchToProps = (dispatch) => ({
startLogin: (email, password) => dispatch(startLogin(email, password))
});
Run Code Online (Sandbox Code Playgroud)
然后,我只需使用组件中的凭据调用此操作,如果返回未定义(引发错误),我会设置错误。
startLogin(email, password).then((data) => {
if (!data) {
setErrors({ login: 'Wrong credentials' });
}
});
Run Code Online (Sandbox Code Playgroud)
我的动作是这样的。
export const startLogin = (email, password) => {
return firebase.auth().signInWithEmailAndPassword(email, password).catch((err) => {
console.log(err);
});
};
Run Code Online (Sandbox Code Playgroud)
这是可行的,但控制台显示 POST 400 错误,我想避免这种情况。
我正在跟随谷歌的这个谈话.但是我无法实例化firebase对象.
我有一个package.json文件,并开始:
npm install firebase --save
Run Code Online (Sandbox Code Playgroud)
然后做了以下事情:
let Firebase = require('firebase');
let myFire = new Firebase('[link to my app]');
Run Code Online (Sandbox Code Playgroud)
但是,当我johhny-five从终端运行应用程序时,我收到错误:Firebase is not a function.
我该如何实现对象?Firebase是否更改了API?
注意:我将它注入到repl并运行>> typeof Firebase我得到它实际上是一个'对象'.
我有一个节点 Web 应用程序,在其中使用 Firebase 进行数据存储,我想知道是否有一种方法可以从 Firebase 控制台添加规则以仅允许在某个数据库上创建和查看数据。
例如,在我的应用程序中,我希望用户能够创建消息并查看消息,但我不希望他们能够删除它们。
有没有办法限制 Firestore 规则中文档的删除?
javascript node.js firebase firebase-security google-cloud-firestore
好的,我有一个关于同一件事的两部分问题.
我知道至少有四次这样问过,但我的问题略有不同.
问题1:
我为我的应用程序使用匿名身份验证(在应用程序安装时使用我的服务器对用户进行身份验证,并且再也不会).匿名身份验证仅在Android设备上完成,因此他们可以访问Firebase数据库和存储.我有经典的"1000+匿名用户"问题,许多人似乎最终结束.(我实际上有22个用户MAX).
可能的解决方案: 我知道你不能批量删除匿名用户,但是,如果我将所有用户ID(全部匿名)复制到一个文件中并将其读入我的node.js服务器,我可以以编程方式登录所有这些用户ID一次又删除它们?此解决方案仅适用于此次"删除这1000个用户"的问题.在那之后,我到达下一个阻止这种情况再次发生的问题.
问题2:
我使用匿名身份验证的原因是因为这个应用程序是政府办公室的紧急通知应用程序,有22个用户,绝对最大值.这些设备需要不停地监听通知.我使用FCM发送实际警报,但如果用户的电子邮件/密码/ google /任何登录状态进入"已注销"状态,该设备是否仍会收到FCM通知?
我问的原因是,也许我不需要使用匿名auth afterall.我使用它是因为我需要绝对100%确定无论用户做什么(没有安装我的应用程序或没有网络连接)他们都会得到通知.匿名auth允许我保证当他们进入我的应用程序时,他们可以访问数据库.
再说一遍,我想我做错了.
摘要:
我有一个Firebase数据库,用于存储用户发送的"警报对象".用户(最多22个)将这些警报直接从他们的Android设备发送到数据库.我的node.js服务器一直在监听变化.当它看到更改时,它会起作用,然后将FCM通知发送给在该通知上列为收件人的所有用户.在Android方面,这些用户匿名向Firebase数据库进行身份验证.但是,当他们安装应用程序时,他们会输入我在Firebase数据库中预先登录的用户名/密码(使用我制作的前端Web应用程序并在我的nodejs服务器上托管).这种匿名身份验证在我的情况下是否必要,或者我可以让他们使用Firebase进行电子邮件/密码身份验证,但仍然可以保证他们会收到警报.
好的,这个问题太长了,我会在这里停止.先感谢您.