Firestore 网络代码示例给出了无效的参数类型
Firestore web code sample gives invalid argument type
我正在试用 Firebase 的新 Firestore。当我 运行 来自 https://firebase.google.com/docs/firestore/manage-data/add-data?authuser=0 的代码示例时,出现错误。
// Add a new document with a generated id.
db.collection("cities").add({
name: "Tokyo",
country: "Japan"
})
.then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
console.error("Error adding document: ", error);
});
Exception caught: (FirebaseError) : Function CollectionReference.add() requires its first argument to be of type object, but it was: a custom Object object
编辑:
抱歉,我没有提到我正在使用 GWT 和 JSNI,它在没有 gwt
的情况下工作正常
快速解决方法
var city: any;
city = Object.assign({}, {
name: "Tokyo",
country: "Japan"
});
db.collection("cities").add(city)
那你可以试试这个:
db.collection("cities").add({
'name': "Tokyo",
'country': "Japan"
})
似乎 GWT 正在生成一些自定义对象,就像错误所说的那样,因此作为解决方法,我正在使用非 JSNI 转换方法函数来创建这样的对象
function convertObject(data) {
var obj = {}
Object.keys(data).forEach(function(key,index) {
console.log(key);
obj[key] = data[key];
});
return obj;
}
仍然只是一种解决方法,很想知道是否有更好的解决方案..
这可能是一个交叉 window 问题:GWT 代码在 iframe 中运行;如果 Firebase 正在寻找 "bare object",它可能会比较对象的构造函数,如果对象跨越 iframe 边界,这将不是预期的构造函数。
也许可以尝试使用 new $wnd.Object()
而不是 {}
或 new Object()
。
我试过这段代码,如果你有来自 angular Object 的数据,它对我有用 表格 :
this.afs.collection("/products").add(Object.assign(product));
我正在试用 Firebase 的新 Firestore。当我 运行 来自 https://firebase.google.com/docs/firestore/manage-data/add-data?authuser=0 的代码示例时,出现错误。
// Add a new document with a generated id.
db.collection("cities").add({
name: "Tokyo",
country: "Japan"
})
.then(function(docRef) {
console.log("Document written with ID: ", docRef.id);
})
.catch(function(error) {
console.error("Error adding document: ", error);
});
Exception caught: (FirebaseError) : Function CollectionReference.add() requires its first argument to be of type object, but it was: a custom Object object
编辑: 抱歉,我没有提到我正在使用 GWT 和 JSNI,它在没有 gwt
的情况下工作正常快速解决方法
var city: any;
city = Object.assign({}, {
name: "Tokyo",
country: "Japan"
});
db.collection("cities").add(city)
那你可以试试这个:
db.collection("cities").add({
'name': "Tokyo",
'country': "Japan"
})
似乎 GWT 正在生成一些自定义对象,就像错误所说的那样,因此作为解决方法,我正在使用非 JSNI 转换方法函数来创建这样的对象
function convertObject(data) {
var obj = {}
Object.keys(data).forEach(function(key,index) {
console.log(key);
obj[key] = data[key];
});
return obj;
}
仍然只是一种解决方法,很想知道是否有更好的解决方案..
这可能是一个交叉 window 问题:GWT 代码在 iframe 中运行;如果 Firebase 正在寻找 "bare object",它可能会比较对象的构造函数,如果对象跨越 iframe 边界,这将不是预期的构造函数。
也许可以尝试使用 new $wnd.Object()
而不是 {}
或 new Object()
。
我试过这段代码,如果你有来自 angular Object 的数据,它对我有用 表格 :
this.afs.collection("/products").add(Object.assign(product));