如何将数据写回存储器



我有一个名为changePlaceName的方法,我知道它正在工作,但在我调用getPlaces查看更改后,我看不到新的地名,而是在创建新地方时看到的名称。

这是changePlaceName

export function changePlaceName(placeId: u32, placeName: PlaceName): void {
assert(placeId >= 0, 'Place ID must be >= 0');
const place = Place.find(placeId);
logging.log(place.name);  //gives "Galata Tower"
place.name = placeName;
logging.log(place.name);  // gives "New Galata Tower"
}

我需要以某种方式保存它,但我不知道该怎么做。

我也尝试过这种方式;

export function changePlaceName(placeId: u32, placeName: string): void {
assert(placeId >= 0, 'Place ID must be >= 0');
const place = Place.find(placeId);
logging.log(place.name);
place.name = placeName;
let newPlace = storage.get<string>(placeName, 'new galata tower');
storage.set<string>(placeName, newPlace);
logging.log('New place is now: ' + newPlace);
}

现在我的视觉代码抱怨storage.set中的newPlace

我该如何修复它?

Place.find的代码是什么?我想你在幕后使用的是一个持久地图。

Place.set吗?您需要将Place存储回用于查找它的相同密钥。

因为您正在使用某种类来管理"地点";,为什么不在save()中添加一个实例方法呢?

顺便说一句,如果你也在这里发布Place的代码,会有所帮助

我的猜测是它看起来像这样?

注意:这是未经测试的代码

@nearBindgen
class Place {
private id: number | null
private name: string
static find (placeId: number): Place {
// todo: add some validation for placeId here
const place = places[placeId]
place.id = placeId
return place
}
// here is the instance method that can save this class
save(): bool {
places[this.id] = this
} 
}
// a collection of places where placeId is the index
const places = new PersistentVector<Place>("p")

相关内容

  • 没有找到相关文章

最新更新