首先,我是新手微风/棱角分明......在阅读了一些博客并观看了一些复数视频后,我(就像我猜的其他人一样)非常兴奋,但经过几周的尝试,我开始讨厌它,因为我从一个问题跑到另一个问题。 这种技术还为时尚早,无法学习和使用吗?
这是我的数据结构:
public class TshirtOrder { public int Id { get; set; } public virtual Student Student { get; set; } public virtual ICollection<OrderItem> OrderItems { get; set; } } public class OrderItem { public int Id { get; set; } [ForeignKey("Type")] public int TshirtTypeId { get; set; } public virtual TshirtType Type { get; set; } [ForeignKey("Size")] public int TshirtSizeId { get; set; } public virtual TshirtSize Size { get; set; } public double UnitPrice { get; set; } public int Quantity { get; set; } [ForeignKey("TshirtOrder")] public int TshirtOrderId { get; set; } public TshirtOrder TshirtOrder { get; set; } }这与breeze datacontext.js有关:
function _createTshirtOrder() { var order = manager.createEntity("TshirtOrder"); order.tshirtItems = []; order.tshirtItems.push(createOrderItem(lookups.tshirtTypes[0], lookups.tshirtSizes[0], 10)); common.saveEntity(order); return order; function createOrderItem(type, size, unitPrice) { var item = manager.createEntity("OrderItem"); item.type = type; item.size = size; item.unitPrice = unitPrice; item.quantity = 0; return item; } }当试图将它保存在common.saveEntity(order) ,我收到了错误
Error: Error while interpolating: {{tshirtOrder.orderItems[0]}} TypeError: Converting circular structure to JSON错误抱怨圆形结构,但我根本没有任何圆形结构。 事实上,这个结构非常标准,我在几个星期前在另一个试验项目中使用了几乎相同的结构。 我不确定我现在使用的新库是否引入了一些新的缺陷。
我知道这个问题已被问到,但我检查了所有答案,但找不到我的解决方案。 最相关的是这里 ,这是公认的解决方案:
var cache = []; JSON.stringify(o, function(key, value) { if (typeof value === 'object' && value !== null) { if (cache.indexOf(value) !== -1) { // Circular reference found, discard key return; } // Store value in our collection cache.push(value); } return value; }); cache = null; // Enable garbage collection但是,它对我不起作用。 当我通过它调试时,我意识到(cache.indexOf(value) !== -1)在我的情况下永远不会是真的。
非常感谢您的帮助。
更新:这是我的saveEntity()方法:
function _saveEntity(masterEntity) { // if nothing to save, return a resolved promise if (!manager.hasChanges()) { return $q(); } var description = describeSaveOperation(masterEntity); return manager.saveChanges().then(saveSucceeded).fail(saveFailed); function describeSaveOperation(entity) { var statename = entity.entityAspect.entityState.name.toLowerCase(); var typeName = entity.entityType.shortName; var title = entity.title; title = title ? (" '" + title + "'") : ""; return statename + " " + typeName + title; } function saveSucceeded() { logger.logInfo("saved " + description); } function saveFailed(error) { var msg = "Error saving " + description + ": " + getErrorMessage(error); masterEntity.errorMessage = msg; logger.logError(msg); // Let user see invalid value briefly before reverting $timeout(function () { manager.rejectChanges(); }, 1000); throw error; // so caller can see failure } function getErrorMessage(error) { var reason = error.message; if (reason.match(/validation error/i)) { reason = getValidationErrorMessage(error); } return reason; } function getValidationErrorMessage(error) { try { // return the first error message var firstItem = error.entitiesWithErrors[0]; var firstError = firstItem.entityAspect.getValidationErrors()[0]; return firstError.errorMessage; } catch (e) { // ignore problem extracting error message return "validation error"; } } }经理在哪里
var manager = new breeze.EntityManager("api/Breeze");First off, I'm new to breeze/angular...after reading some blogs and watching some pluralsight videos, I (like everybody else I guess) was so excited, but after a few weeks of trying, I started hating it because I'm running from one problem to the other. Is this technology still too early to learn and use?
Here is my data structure:
public class TshirtOrder { public int Id { get; set; } public virtual Student Student { get; set; } public virtual ICollection<OrderItem> OrderItems { get; set; } } public class OrderItem { public int Id { get; set; } [ForeignKey("Type")] public int TshirtTypeId { get; set; } public virtual TshirtType Type { get; set; } [ForeignKey("Size")] public int TshirtSizeId { get; set; } public virtual TshirtSize Size { get; set; } public double UnitPrice { get; set; } public int Quantity { get; set; } [ForeignKey("TshirtOrder")] public int TshirtOrderId { get; set; } public TshirtOrder TshirtOrder { get; set; } }This is related breeze datacontext.js:
function _createTshirtOrder() { var order = manager.createEntity("TshirtOrder"); order.tshirtItems = []; order.tshirtItems.push(createOrderItem(lookups.tshirtTypes[0], lookups.tshirtSizes[0], 10)); common.saveEntity(order); return order; function createOrderItem(type, size, unitPrice) { var item = manager.createEntity("OrderItem"); item.type = type; item.size = size; item.unitPrice = unitPrice; item.quantity = 0; return item; } }When trying to save it at common.saveEntity(order), I got the error
Error: Error while interpolating: {{tshirtOrder.orderItems[0]}} TypeError: Converting circular structure to JSONThe error complains about the circular structure, but I don't have any circular structure at all. In fact, the structure is very standard one and I had the almost same structure working a couple weeks earlier in another trial project. I'm not sure if the new libraries I'm using now has introduced some new defects.
I know this question has been asked, but I checked all answers and couldn't find my solution. The most relevant one is here, and this is the accepted solution:
var cache = []; JSON.stringify(o, function(key, value) { if (typeof value === 'object' && value !== null) { if (cache.indexOf(value) !== -1) { // Circular reference found, discard key return; } // Store value in our collection cache.push(value); } return value; }); cache = null; // Enable garbage collectionHowever, it doesn't work for me. As I debug through it, I realize (cache.indexOf(value) !== -1) is never true in my case.
Your help is much appreciated.
Update: This is my saveEntity() method:
function _saveEntity(masterEntity) { // if nothing to save, return a resolved promise if (!manager.hasChanges()) { return $q(); } var description = describeSaveOperation(masterEntity); return manager.saveChanges().then(saveSucceeded).fail(saveFailed); function describeSaveOperation(entity) { var statename = entity.entityAspect.entityState.name.toLowerCase(); var typeName = entity.entityType.shortName; var title = entity.title; title = title ? (" '" + title + "'") : ""; return statename + " " + typeName + title; } function saveSucceeded() { logger.logInfo("saved " + description); } function saveFailed(error) { var msg = "Error saving " + description + ": " + getErrorMessage(error); masterEntity.errorMessage = msg; logger.logError(msg); // Let user see invalid value briefly before reverting $timeout(function () { manager.rejectChanges(); }, 1000); throw error; // so caller can see failure } function getErrorMessage(error) { var reason = error.message; if (reason.match(/validation error/i)) { reason = getValidationErrorMessage(error); } return reason; } function getValidationErrorMessage(error) { try { // return the first error message var firstItem = error.entitiesWithErrors[0]; var firstError = firstItem.entityAspect.getValidationErrors()[0]; return firstError.errorMessage; } catch (e) { // ignore problem extracting error message return "validation error"; } } }Where manager is
var manager = new breeze.EntityManager("api/Breeze");最满意答案
common.saveEntity(order)背后的代码是什么? 你是通过EntityManager.saveChanges方法?
What is the code behind common.saveEntity(order)? Are you going thru the EntityManager.saveChanges method?
Breeze / Angular:TypeError:将循环结构转换为JSON(Breeze/Angular: TypeError: Converting circular structure to JSON)首先,我是新手微风/棱角分明......在阅读了一些博客并观看了一些复数视频后,我(就像我猜的其他人一样)非常兴奋,但经过几周的尝试,我开始讨厌它,因为我从一个问题跑到另一个问题。 这种技术还为时尚早,无法学习和使用吗?
这是我的数据结构:
public class TshirtOrder { public int Id { get; set; } public virtual Student Student { get; set; } public virtual ICollection<OrderItem> OrderItems { get; set; } } public class OrderItem { public int Id { get; set; } [ForeignKey("Type")] public int TshirtTypeId { get; set; } public virtual TshirtType Type { get; set; } [ForeignKey("Size")] public int TshirtSizeId { get; set; } public virtual TshirtSize Size { get; set; } public double UnitPrice { get; set; } public int Quantity { get; set; } [ForeignKey("TshirtOrder")] public int TshirtOrderId { get; set; } public TshirtOrder TshirtOrder { get; set; } }这与breeze datacontext.js有关:
function _createTshirtOrder() { var order = manager.createEntity("TshirtOrder"); order.tshirtItems = []; order.tshirtItems.push(createOrderItem(lookups.tshirtTypes[0], lookups.tshirtSizes[0], 10)); common.saveEntity(order); return order; function createOrderItem(type, size, unitPrice) { var item = manager.createEntity("OrderItem"); item.type = type; item.size = size; item.unitPrice = unitPrice; item.quantity = 0; return item; } }当试图将它保存在common.saveEntity(order) ,我收到了错误
Error: Error while interpolating: {{tshirtOrder.orderItems[0]}} TypeError: Converting circular structure to JSON错误抱怨圆形结构,但我根本没有任何圆形结构。 事实上,这个结构非常标准,我在几个星期前在另一个试验项目中使用了几乎相同的结构。 我不确定我现在使用的新库是否引入了一些新的缺陷。
我知道这个问题已被问到,但我检查了所有答案,但找不到我的解决方案。 最相关的是这里 ,这是公认的解决方案:
var cache = []; JSON.stringify(o, function(key, value) { if (typeof value === 'object' && value !== null) { if (cache.indexOf(value) !== -1) { // Circular reference found, discard key return; } // Store value in our collection cache.push(value); } return value; }); cache = null; // Enable garbage collection但是,它对我不起作用。 当我通过它调试时,我意识到(cache.indexOf(value) !== -1)在我的情况下永远不会是真的。
非常感谢您的帮助。
更新:这是我的saveEntity()方法:
function _saveEntity(masterEntity) { // if nothing to save, return a resolved promise if (!manager.hasChanges()) { return $q(); } var description = describeSaveOperation(masterEntity); return manager.saveChanges().then(saveSucceeded).fail(saveFailed); function describeSaveOperation(entity) { var statename = entity.entityAspect.entityState.name.toLowerCase(); var typeName = entity.entityType.shortName; var title = entity.title; title = title ? (" '" + title + "'") : ""; return statename + " " + typeName + title; } function saveSucceeded() { logger.logInfo("saved " + description); } function saveFailed(error) { var msg = "Error saving " + description + ": " + getErrorMessage(error); masterEntity.errorMessage = msg; logger.logError(msg); // Let user see invalid value briefly before reverting $timeout(function () { manager.rejectChanges(); }, 1000); throw error; // so caller can see failure } function getErrorMessage(error) { var reason = error.message; if (reason.match(/validation error/i)) { reason = getValidationErrorMessage(error); } return reason; } function getValidationErrorMessage(error) { try { // return the first error message var firstItem = error.entitiesWithErrors[0]; var firstError = firstItem.entityAspect.getValidationErrors()[0]; return firstError.errorMessage; } catch (e) { // ignore problem extracting error message return "validation error"; } } }经理在哪里
var manager = new breeze.EntityManager("api/Breeze");First off, I'm new to breeze/angular...after reading some blogs and watching some pluralsight videos, I (like everybody else I guess) was so excited, but after a few weeks of trying, I started hating it because I'm running from one problem to the other. Is this technology still too early to learn and use?
Here is my data structure:
public class TshirtOrder { public int Id { get; set; } public virtual Student Student { get; set; } public virtual ICollection<OrderItem> OrderItems { get; set; } } public class OrderItem { public int Id { get; set; } [ForeignKey("Type")] public int TshirtTypeId { get; set; } public virtual TshirtType Type { get; set; } [ForeignKey("Size")] public int TshirtSizeId { get; set; } public virtual TshirtSize Size { get; set; } public double UnitPrice { get; set; } public int Quantity { get; set; } [ForeignKey("TshirtOrder")] public int TshirtOrderId { get; set; } public TshirtOrder TshirtOrder { get; set; } }This is related breeze datacontext.js:
function _createTshirtOrder() { var order = manager.createEntity("TshirtOrder"); order.tshirtItems = []; order.tshirtItems.push(createOrderItem(lookups.tshirtTypes[0], lookups.tshirtSizes[0], 10)); common.saveEntity(order); return order; function createOrderItem(type, size, unitPrice) { var item = manager.createEntity("OrderItem"); item.type = type; item.size = size; item.unitPrice = unitPrice; item.quantity = 0; return item; } }When trying to save it at common.saveEntity(order), I got the error
Error: Error while interpolating: {{tshirtOrder.orderItems[0]}} TypeError: Converting circular structure to JSONThe error complains about the circular structure, but I don't have any circular structure at all. In fact, the structure is very standard one and I had the almost same structure working a couple weeks earlier in another trial project. I'm not sure if the new libraries I'm using now has introduced some new defects.
I know this question has been asked, but I checked all answers and couldn't find my solution. The most relevant one is here, and this is the accepted solution:
var cache = []; JSON.stringify(o, function(key, value) { if (typeof value === 'object' && value !== null) { if (cache.indexOf(value) !== -1) { // Circular reference found, discard key return; } // Store value in our collection cache.push(value); } return value; }); cache = null; // Enable garbage collectionHowever, it doesn't work for me. As I debug through it, I realize (cache.indexOf(value) !== -1) is never true in my case.
Your help is much appreciated.
Update: This is my saveEntity() method:
function _saveEntity(masterEntity) { // if nothing to save, return a resolved promise if (!manager.hasChanges()) { return $q(); } var description = describeSaveOperation(masterEntity); return manager.saveChanges().then(saveSucceeded).fail(saveFailed); function describeSaveOperation(entity) { var statename = entity.entityAspect.entityState.name.toLowerCase(); var typeName = entity.entityType.shortName; var title = entity.title; title = title ? (" '" + title + "'") : ""; return statename + " " + typeName + title; } function saveSucceeded() { logger.logInfo("saved " + description); } function saveFailed(error) { var msg = "Error saving " + description + ": " + getErrorMessage(error); masterEntity.errorMessage = msg; logger.logError(msg); // Let user see invalid value briefly before reverting $timeout(function () { manager.rejectChanges(); }, 1000); throw error; // so caller can see failure } function getErrorMessage(error) { var reason = error.message; if (reason.match(/validation error/i)) { reason = getValidationErrorMessage(error); } return reason; } function getValidationErrorMessage(error) { try { // return the first error message var firstItem = error.entitiesWithErrors[0]; var firstError = firstItem.entityAspect.getValidationErrors()[0]; return firstError.errorMessage; } catch (e) { // ignore problem extracting error message return "validation error"; } } }Where manager is
var manager = new breeze.EntityManager("api/Breeze");最满意答案
common.saveEntity(order)背后的代码是什么? 你是通过EntityManager.saveChanges方法?
What is the code behind common.saveEntity(order)? Are you going thru the EntityManager.saveChanges method?
发布评论