根据文档 here,应该有可能获得尚未创建的Firestore文档的ID,将其添加到要保存的对象,然后像这样持久保存它:
// Add a new document with a generated id.
var newCityRef = db.collection("cities").doc();
// later...
newCityRef.set(data);
在我的应用程序中,我使用以下代码遵循此模式:
async createNewProject(projectObject : Project) : Promise<boolean> {
let doc = this.firestore.collection("projects").doc();
projectObject.id = doc.ref.id;
try {
await doc.set(projectObject);
} catch(err) {
console.error(err);
return false;
}
return true;
}
虽然运行,但在控制台中出现错误:
FirebaseError:函数CollectionReference.doc()要求其第一个参数的类型为非空字符串,但是它是:undefined
有人可以照亮吗?我见过其他人在引用此方法(使用不带参数的doc方法作为问题的解决方案,但其他人则看到此错误。这是该API的Angular实现上的某种API还是一个问题?在事情的火力方面(或者我做错了什么?)
答案 0 :(得分:0)
doc()
方法返回一个DocumentReference
,该属性不具有 static Database _db;
Future<Database> get db async {
if(_db != null)
return _db;
_db = await initDb();
return _db;
}
//Creating a database with name test.dn in your directory
initDb() async {
io.Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, "test.db");
var theDb = await openDatabase(path, version: 1, onCreate: _onCreate);
return theDb;
}
checkDb(){
//do operation
var dbClient = await db;
}
属性,但是具有一个ref
属性。因此,您需要执行以下操作:
id
代替
projectObject.id = doc.id;