我是构建Wakanda项目的新手,我已成功构建了一个包含多个dataClasses的dataModel,我希望使用SQL,JSON或CSV转储文件使用虚拟生成的数据填充这些dataClasses。
我认为这是正确的,我最好使用JSON格式的数据文件,然后将这些虚拟数据上传到dataModel。我无法在Wakanda Studio找到任何可能的地方。有人能告诉/告诉我如何最好地填充假数据的1000多条记录。
提前致谢。
答案 0 :(得分:4)
我通常喜欢在解析 CSV 时使用简单的loadText
函数填充数据库,或者使用 JSON 文件解析importFromJSON
。
.js
文件。 backend
和database
个文件夹被视为服务器端。loadText('/path/to/file.csv').split("\n")
,否则请使用importFromJSON
获取 JSON 文件。输出显示在代码编辑器底部的控制台中。
答案 1 :(得分:3)
有一种importFromJSON( )
方法可以补充exportAsJSON( )
方法。
如果您的JSON来自Wakanda的exportAsJSON
方法之外的其他内容,那么您可能需要创建一些记录,然后运行exportAsJSON
来验证Wakanda期望的格式。然后在使用importFromJSON
之前确保您的JSON格式相同。
答案 2 :(得分:1)
这是我从JSON对象导入的方法。
您必须知道根据关系以正确的顺序导入数据。例如,您不能先导入员工并分配公司,因为公司尚不存在。所以这里的正确顺序是导入公司,然后导入员工并链接相关的公司。
/**
* Example Data
*/
var hireDate = new Date('2012',7,13,1,0,0),
companies = [{name:'Company 1'},{name:'Company 2'},{name:'Company 3'}],
employees = [{firstName:'John',lastName:'Doe',company:'Company 1',hireDate:hireDate,salary:2000},
{firstName:'Frederic',lastName:'Smith',company:'Company 2',hireDate:hireDate,salary:2000},
{firstName:'John',lastName:'Doe',company:'Company 3',hireDate:hireDate,salary:3000},
{firstName:'Marc',lastName:'Petit',company:'Company 2',hireDate:hireDate,salary:5000},
{firstName:'Arthur',lastName:'Johns',company:'Company 3',hireDate:hireDate,salary:2500},
{firstName:'Mike',lastName:'Sina',company:'Company 3',hireDate:hireDate,salary:2900},
{firstName:'Jack',lastName:'Taylor',company:'Company 1',hireDate:hireDate,salary:7800},
{firstName:'Simon',lastName:'Portmann',company:'Company 2',hireDate:hireDate,salary:4700}],
newCompany,newEmployee;
companies.forEach(function(company){
newCompany = new ds.Company(company);
newCompany.save();
});
employees.forEach(function(employee){
newEmployee = new ds.Employee(employee);
newEmployee.company = ds.Company.find('name == :1',employee.company)
newEmployee.save();
});
ds.Employee.all()
如果属性名称与dataClass中的属性名称相同,则只需在创建时分配对象即可。或者,如果你有一些特殊规则,你可以操纵属性:
employees.forEach(function(employee){
newEmployee = new ds.Employee();
// Example how to assign value to an attribute on the import
// newEmployee is the new employee created in the dataStore of Wakanda.
// employee is the employee which come from the JSON object.
// Maybe the imported data have different attribute names.
newEmployee.firstName = employee.name;
newEmployee.lastName = employee.lname;
newEmployee.birthDate = new Date(employee.datestamp);
newEmployee.company = ds.Company.find('name == :1',employee.company)
newEmployee.save();
});
答案 3 :(得分:0)
我所做的是拥有我在项目级别创建的.js
文件。在该文件中是下面的jsfiddle中的代码。您将看到,当您的解决方案运行时,您可以点击编辑器窗口上方的“播放”按钮来运行脚本。
请注意,您对数据存储类的访问仍会受到您在数据存储类上设置的任何validate()
或restrict()
或save()
等事件的影响,以限制访问/保护您的数据。如果这些限制妨碍您,请查看promoteWith()
和unPromote()
。
我的脚本从项目级别的Backups
文件夹加载逗号分隔的CSV。我把javascript放在这里给你看:
https://jsfiddle.net/kgwd1kek/
如果你愿意,我可以扩展这个,我希望这会有所帮助。
此外,如果您指的是解决方案中第一个/唯一一个项目以外的项目,您将需要更改第2行的数组索引。
另外,您可以在for
文件中放置.js
循环,该文件从1-1000创建记录并保存。我这样做,甚至使用Math.random()
function I picked up from MDN来创建包含随机数据的记录。即使在字符串数据或布尔值的情况下,我使用随机数和switch()
语句在保存之前将许多预定字符串值中的一个添加到实体。对我来说这是一个很好的测试解决方案。