gpt4 book ai didi

javascript - 如何使用 Parse.Query 检索特定对象

转载 作者:行者123 更新时间:2023-11-28 15:26:12 25 4
gpt4 key购买 nike

我正在使用 Parse 创建一个 WebApp,并尝试使用以下代码获取对象 Product 的实例:

getProduct: function() {
var productClass = Parse.Object.extend("Product");
var query = new Parse.Query(productClass);
var result = query.get(productId, {
success: function(object) {
console.log(object.get("productName"));
},
error: function(object, error) {
...
}
});
return result;
}

我得到一个:

result.get is not a function

仅打印对象,我意识到我没有得到Product,我在控制台(Safari)中得到了这个:

[Log] Object (views.js, line 269)
_rejected: false
_rejectedCallbacks: Array[0]
_resolved: true
_resolvedCallbacks: Array[0]
_result: Arguments[1]
__proto__: Object

我尝试了很多方法,但无法检索 Product 对象及其属性。我做错了什么?

编辑

我正在添加我的产品 View :

window.app.Products = Parse.View.extend({

template: _.template($('#products-template').html()),

el: $('body'),
content: $('#content'),

...

initialize: function() {
_.bindAll(this, 'render');
this.render();
},

render: function () {
$(this.content).html(this.template);
return this;
},

...

getUser: function() {
return Parse.User.current();
},

getUserProduct: function() {
var promise = new Parse.Promise();

var productClass = Parse.Object.extend("Product");
var query = new Parse.Query(productClass);
query.equalTo("objectId", this.getUser().get("product").id);
query.first().then(function(result) {
if(result){
// If result was defined, the object with this objectID was found
promise.resolve(result);
} else {
console.log("Product was not found");
promise.resolve(null);
}
}, function(error){
console.error("Error searching for Product. Error: " + error);
promise.error(error);
});

return promise;
},

setProduct: function() {
this.getUserProduct().then(function(result) {
if(result){
console.log(result.get("productName"));
var productName = result.get("productName");

} else {
console.log("Could not set Product");
}
}, function(error){
console.log("Error: " + error);
});
}
});

我尝试通过参数列表并更新它们,例如:

info: {
user: '...',
product: '...'
}

然后将其传递给模板:

$(this.content).html(this.template(this.info));

但我无法更新产品

最佳答案

当我写这篇文章时,我意识到通过将产品搜索拉入它自己的方法中,您实际上并没有节省那么多代码。我希望它至少能向您演示如何创建和调用您自己的自定义异步方法。例如,您可能有一个比当前查询复杂得多的查询,或者它可能在找到所需响应之前执行多个查询,在这种情况下,将其拉入它自己的方法中是有意义的。

获取产品异步方法

此方法检索具有给定objectID的产品

var getProduct =  function(productId) {
var promise = new Parse.Promise();

var Product = Parse.Object.extend("Product");
var query = new Parse.Query(Product);
query.equalTo("objectId",productId);
query.first().then(function(result){
if(result){
// If result was defined, the object with this objectID was found
promise.resolve(result);
} else {
console.log("Product ID: " + productId + " was not found");
promise.resolve(null);
}
}, function(error){
console.error("Error searching for Product with id: " + productId + " Error: " + error);
promise.error(error);
});

return promise;
}

调用方式

调用上述方法的简单方法的示例。

var myMethod = function(){
var productID = "12345678";

getProduct(productID).then(function(result){
if(result){
console.log(result.get("productName"));
var productName = result.get("productName");
var productPrice = result.get("productPrice");
// Now that you have some relevant information about your product
// you could render it out to an Express template, or use this
// value in a calculation etc.
} else {
console.log("Product with objectId: " + productID + " was not found");
}
}, function(error){
console.log("Error: " + error);
});

}

注释

  • 由于这些方法是异步的,因此没有实际数据在“返回值”中返回(该方法返回一个 promise )。相反,我们返回相关数据作为 promise 的结果(其中你会看到promise.resolve(XXX))
  • 拥有一个没有任何意义此 Node.js 风格架构中的可变全局变量。

关于javascript - 如何使用 Parse.Query 检索特定对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28843107/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com