Home Php C# Sql C C++ Javascript Python Java Go Android Git Linux Asp.net Django .net Node.js Ios Xcode Cocoa Iphone Mysql Tomcat Mongodb Bash Objective-c Scala Visual-studio Apache Elasticsearch Jar Eclipse Jquery Ruby-on-rails Ruby Rubygems Android-studio Spring Lua Sqlite Emacs Ubuntu Perl Docker Swift Amazon-web-services Svn Html Ajax Xml Java-ee Maven Intellij-idea Rvm Macos Unix Css Ipad Postgresql Css3 Json Windows-server Vue.js Typescript Oracle Hibernate Internet-explorer Github Tensorflow Laravel Symfony Redis Html5 Google-app-engine Nginx Firefox Sqlalchemy Lucene Erlang Flask Vim Solr Webview Facebook Zend-framework Virtualenv Nosql Ide Twitter Safari Flutter Bundle Phonegap Centos Sphinx Actionscript Tornado Register | Login | Edit Tags | New Questions | 繁体 | 简体


10 questions online user: 17

0
votes
answers
25 views
+10

.NET WPF當啓動新線程時MissingMethodException

6

我有一個WPF應用程序,它有一個窗體,當它啓動時,在新線程中調用一個自定義方法。.NET WPF當啓動新線程時MissingMethodException

Private Sub TestStep1_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded 
    Dim oThread As New Thread(AddressOf DisplayNextPicture) 
    oThread.Start() 
End Sub 

Private Sub DisplayNextPicture() 
    '' do stuff 
End Sub 

這可以在我的機器上正常工作,但在客戶端的機器上啓動新線程會導致MissingMethodException。我不知道爲什麼會發生這種情況(不幸的是客戶端位於遠程位置,因此我必須通過在跟蹤語句和試驗錯誤中滑動來進行調試)。這是肯定的DisplayNextPicture()方法,因爲我已經能夠通過跟蹤來確定沒有找到。

我能想到的唯一的事情就是這與框架級別的安全性有關。從WPF應用程序啓動新線程是否有限制?

我無法通過Application.DispatcherUnhandledException捕獲此異常,因此我無法獲取任何異常詳細信息或堆棧跟蹤。該客戶端獲得一個.NET運行時異常對話框具有以下信息,這是我所知道的異常類型的唯一途徑:

事件類型:clr20r3 P1:testapp.exe P2:1.0.0.0 P3:49fa2234 P4: mscorlib程序P5:2.0.0.0 P6:471ebc5b P7:1295 P8:14
P9:system.missingMethodException而

請幫助:)

+0

任何發佈異常和堆棧的機會? – 2009-05-01 08:50:20

+0

我無法捕捉到這個例外。我通過Application.DispatcherUnhandledException事件捕獲所有異常,但是這個漏洞通過某種方式滑過,我假設它是因爲它的本質。我知道這是一個MissingMethodException的唯一原因是用戶獲得有限的信息在.NET運行時異常對話框,但它提到了這一點例外: 事件類型:clr20r3 P1:testapp.exe P2:1.0.0.0 P3:49fa2234 P4: mscorlib P5:2.0.0.0 P6:471ebc5b P7:1295 P8:14 P9:system.missingmethodexception – Keith 2009-05-01 13:36:04

沙发
0
2

剛試圖運行Windows服務(我寫的)時遇到此問題。該服務在我的測試環境中運行良好,但不在其他機器上運行。

問題原來是麻煩的機器運行的是Framework 3.5版,而我的開發機器是3.5 Service Pack 1.將機器升級到SP1修復了問題。

希望這可以緩解一些人的痛苦。

板凳
0
1

的MissingMethodException由JITer拋出(在即時編譯器) 。抖動一次將代碼編譯爲彙編語言的一種方法。在委託方法(DisplayNextPicture)中有一些方法正在調用目標機器上的庫中不存在的方法,我猜它正在運行舊版本的.net。由於抖動無法找到它爆炸的方法。

在VS 2008和3.5 SP1安裝的計算機上構建時,我已經遇到過這幾次,然後嘗試在僅安裝了3.0的計算機上運行。有時候微軟會向庫中添加一個方法,而不是升級他們的主版本或次版本。通常這是在.net框架服務包之一中完成的。

通過代理方法中的代碼,查看MSDN上的任何可疑方法,並仔細檢查「版本信息」以查看方法支持哪些框架版本。

如果可能的話,您也可以讓客戶端升級到最新的框架。

地板
0
1

我遇到了同樣的問題。我正在調用執行版本.Net中不存在的Dispatcher.Invoke方法的重載。我在MSDN上發現了一個有用的評論,即幫助我的方法,儘管我的問題稍有不同。

http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.invoke.aspx

如果使用Invoke方法嘗試使用具有的DispatcherPriority,因爲它是第一個參數的過載。

4楼
0
3

我正在使用VS2008,.Net 3.5,並有一個類似的問題啓動服務的線程。 升級到.Net 3.5 SP1解決了這個問題。 感謝您的幫助球員。

5楼
0
2

FWIW,我有一個P9系統。missingmethodexception錯誤是在某些機器上崩潰了一個簡單的應用程序,而在其他機器上卻沒有。我將其追蹤到一個在線程內執行的「.WaitOne(2000)」行。永遠不會在我的機器上造成問題,但它肯定會在其他機器上崩潰,即使該代碼從未執行!該線程甚至沒有得到該線。當程序啓動時發生崩潰,這真的令人沮喪。我甚至在代碼行問題上有一個「try..catch」,但它沒有幫助。我停止使用AutoResetEvent並使用變量和「while(! signaled) { Thread.sleep(20); },這是一個kludge,但它的工作....

+0

謝謝。這非常有幫助,有助於查明我遇到的確切問題。這篇文章解釋了這個問題以及如何最好地解決這個問題。 http://blog.darrenstokes.com/2009/03/30/watch-out-for-those-waitone-overloads-when-you-need-backwards-compatibility/ – 2010-03-03 15:14:51

6楼
0
3

當在Windows XP SP3上測試我的應用程序,目標.NET 3.5時,我得到了一個System.MissingMethodException 。我最終安裝了Visual Studio 2008 Express,嘗試從頭開始編譯應用程序,然後編譯器給了我相關的錯誤,結果發現AutoResetEvent中的WaitOne方法只有2個參數的簽名,因此我必須重寫:

reset.WaitOne(1000);

reset.WaitOne(1000, true);

我想,微軟忘了將第一個重載添加到Windows XP .NET 3.5版本。因爲它在Windows 7中工作並存在。

0
votes
answers
29 views
+10

Magento:SKU產品ID(JavaScript /客戶端)

1

有沒有辦法以SKU作爲客戶端請求產品ID而無需訪問服務器?Magento:SKU產品ID(JavaScript /客戶端)

感謝您的幫助!

+0

可能通過soap api,但它仍然需要驗證。定義你的意思是「沒有訪問服務器的客戶端」 –

+0

基本上我想在阿迪達斯網站上獲得產品的產品ID(基於我住的magento) – Noah

沙发
0
1

根據你的回答,我假設你想從第三方商店取消magento產品ID。

要做到這一點的最可靠的方法是從隱藏字段以addtocart形式讀取它。

+0

謝謝,已經找到了這種可能的解決方案。但是,我想知道是否有另一個,以防產品頁面不在線或無法訪問。 – Noah

+0

我強烈懷疑這是可能的 –

+0

感謝您的回答 – Noah

0
votes
answers
13 views
+10

如何將Facebook身份驗證添加到我的反應應用程序?

0

我使用express作爲後端。我在後端實施了Facebook身份驗證。如何將Facebook身份驗證添加到我的反應應用程序?

router.get('/login/facebook', 
    passport.authenticate('facebook',{scope:['email']})); 

router.get('/login/facebook/callback', 
    passport.authenticate('facebook',{ 
     successRedirect : '/home', 
     failureRedirect:'/' 
}) 

);

現在我想通過我的反應應用程序調用它,以便當用戶登陸主頁時,首先他應該通過Facebook進行身份驗證,然後才能看到主頁。我怎樣才能做到這一點 ?

我試過使用react-router,但我不明白如何使用react-router調用後端。使用fetch命令 我也取/登錄/ Facebook的:

componentDidMount(){ 
    fetch("127.0.0.1:3001/login/facebook"); 

但它給了我CORS錯誤。

我的反應應用程序是在127.0.0.1:3000和表示服務器在127.0.0.1:3001。

沙发
0
0

有幾種選擇:

如果您正在使用的WebPack開發服務器,你可以設置一個代理您的API。請參閱here

您可以在開發過程中臨時禁用cors驗證。請參閱here

板凳
0
1

如果此問題僅在開發模式下,那麼Daniel的答案是正確的。

無論如何,我建議避免直接從:3000應用程序調用:3001 API。這是我會做的。

我將編輯取調用如下,

componentDidMount(){ 
    fetch("/login/facebook"); 
} 

此呼叫將由服務於反應應用後端被接收。 現在有案件,

案例1:您的文件服務應用程序將具有能夠將請求轉發給一個API代理方法。例如閱讀here

案例2這是我推薦方法。我只需在3000服務器中編寫身份驗證邏輯,並只使用:3001 API來處理應用程序的業務邏輯。

案例3:如果你有一個後端應用程序(3000),說使用expressJs寫的,你可以將請求轉發至:3001 API。下面是一個示例代碼,

client.send({ 
    method: req.method, 
    path: req.url, 
    data: req.body, 
    params: req.params 
}).then((response) => { 
    // Something 
}).catch((err) => { 
    // Handle error 
}); 

這裏客戶端使用所述request模塊,以使HTTP調用的模塊。 您可以將上述調用作爲快速中間件來實現,以用於所有HTTP調用。

20
votes
answers
20 views
+10

How to send objects through bundle

I need to pass a reference to the class that does the majority of my processing through a bundle.

The problem is it has nothing to do with intents or contexts and has a large amount of non-primitive objects. How do I package the class into a parcelable/serializable and pass it to a startActivityForResult?

沙发
+110

You can also make your objects Serializable and use the Bundle's getSerializable and putSerializable methods.

我試過了,很快意識到這是不切實際的。我不認為存儲在傳遞類(線程)中的大多數對像都是可序列化的。:)雖然謝謝。 - ahodder 2010年11月23日18:00

板凳
+90

Possible solution:

Bundle bundle = new Bundle();
bundle.putSerializable("key", new CustomObject());

Class CustomObject:

class CustomObject implements Serializable{
 private SubCustomObject1 sc1;
 private SubCustomObject2 sc2;
}

Subcustom objects:

class SubCustomObject1 implements Serializable{ }

class SubCustomObject2  implements Serializable{ }
地板
0

I came across this question when I was looking for a way to pass a Date object. In my case, as was suggested among the answers, I used Bundle.putSerializable() but that wouldn't work for a complex thing as the described DataManager in the original post.

My suggestion that will give a very similar result to putting said DataManager in the Application or make it a Singleton is to use Dependency Injection and bind the DataManager to a Singleton scope and inject the DataManager wherever it is needed. Not only do you get the benefit of increased testability but you'll also get cleaner code without all of the boiler plate "passing dependencies around between classes and activities" code. (Robo)Guice is very easy to work with and the new Dagger framework looks promising as well.

好吧,有了類似Date的東西,你可以傳遞長值。但是,其餘的聽起來不錯。謝謝。 - ahodder 2013年2月8日15:46

4楼
0

another simple way to pass object using a bundle:

  • in the class object, create a static list or another data structure with a key
  • when you create the object, put it in the list/data structure with the key (es. the long timestamp when the object is created)
  • create the method static getObject(long key) to get the object from the list
  • in the bundle pass the key, so you can get the object later from another point in the code
0
votes
answers
22 views
+10

如何使用sqCommand.ExecuteReader()返回數據;?

1

我有sqlite的方法,使SELECT查詢:如何使用sqCommand.ExecuteReader()返回數據;?

try { 
myConn.Open(); 

using(SQLiteCommand sqCommand = new SQLiteCommand(sql, myConn)) { 
    sqCommand.CommandText = sql; 
    SQLiteDataReader reader = sqCommand.ExecuteReader(); 
    return reader.GetString(0); 
} 
} catch (Exception e) { 
// do exception handling 
} 

我試圖讓最後插入的ID:

sql = 'SELECT id FROM Pacients ORDER BY id DESC LIMIT 1'; 

我試圖迪,像:

return reader.GetString(0); 

它拋出我打破例外「沒有當前行」

+0

在嘗試從DataReader中獲取任何內容之前,應該調用Read並檢查返回值。如果爲false,則查詢沒有返回任何內容。大量的例子。 – Steve

+0

事實上,你*必須*調用讀取來前進到第一行(並且前進到任何後續行) –

+0

有很多SQL查詢的例子,而不是Sqlitre。你能幫忙嗎? – OPV

沙发
0
2

Afte r調用ExecuteReader需要調用Read以定位數據集的第一條記錄。 Read返回true/false以通知您是否有要讀取的記錄。所以,你的代碼更改爲

try { 
myConn.Open(); 

using(SQLiteCommand sqCommand = new SQLiteCommand(sql, myConn)) { 
    sqCommand.CommandText = sql; 
    SQLiteDataReader reader = sqCommand.ExecuteReader(); 
    if(reader.Read()) 
    return reader.GetString(0); 
    else 
    return ""; // or whatever you want to return if no records are present 
} 
} catch (Exception e) { 
// do exception handling 
} 

說,記住,如果你想要一個像你在查詢必須從單行檢索只是一列,然後它是更好,而不是使用的ExecuteReader

try { 
myConn.Open(); 

using(SQLiteCommand sqCommand = new SQLiteCommand(sql, myConn)) { 
    sqCommand.CommandText = sql; 
    object result = sqCommand.ExecuteScalar(); 
    return result != null ? result.ToString() : ""; 
} 
} catch (Exception e) { 
// do exception handling 
} 
的ExecuteScalar
+0

Thak you,hw to返回所有數據:'if(reader.Read()) return reader.GetString(0);'?那通過列名得到價值之後? – OPV

+0

只是'返回閱讀器'? – OPV

+0

您的示例返回零或1條記錄。你的意思是什麼_所有data_? – Steve

0
votes
answers
29 views
+10

如何在Google端點響應中發送自定義標頭

0

我使用的是谷歌端點框架,但是我有一個要求將自定義標頭髮送給響應中的請求者。如何在Google端點響應中發送自定義標頭

但是,在谷歌的端點,所有的響應都作爲Message類的對象返回,因此無法找到響應請求者的頭部。

請幫我任何這樣的方法中,我可以通過谷歌搜索添加我的頭,以發現這個響應

沙发
0
0
+0

我也遇到了這個職位,但我想端點的內置功能(如果有任何)爲我的請求設置標題。而不是一些修補程序 –

+1

https://youtu.be/j7leQB_Oe_k – BareNakedCoder

+0

我是開發這個框架的開發者,並且我已經添加了這個功能請求。 –

0
votes
answers
40 views
+10

Asp.net MVC - 第二次嘗試打開模式窗口後的錯誤

1

我試圖在打開詳細信息時實現引導模式窗口。模態窗口在ajax調用中打開。問題是,我只能打開一次。它會打開整個模板,但它不應該與第二次嘗試過程中出現了錯誤:Asp.net MVC - 第二次嘗試打開模式窗口後的錯誤

Uncaught error: modal is not a function

然後我得到這個錯誤,無法打開模態窗口了。

的容器的主視圖:

<div id="data-container"> 
    @Html.Action("PartialDisplay", "Disp") 
</div> 

我顯示在局部視圖中的所有數據,因此控制器看起來像這樣:

public ActionResult Display() 
     { 
      return View(); 
     } 
     public PartialViewResult PartialDisplay(int[] checkId) 
     { 
      if (checkId == null) 
      { 
       [my code] 
       return PartialView(viewModel); 
      } 

詳細視圖:

@{ 
    ViewBag.Title = "PartialDisplay"; 
    Layout = null; 
} 

<!-- Modal --> 
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <div class="modal-header"> 
       <h5 class="modal-title" id="exampleModalLabel">Detail</h5> 
       <button type="button" class="close" data-dismiss="modal" aria-label="Close"> 
        <span aria-hidden="true">&times;</span> 
       </button> 
      </div> 
      <div class="modal-body" id="modalContent"> 
      </div> 
      <div class="modal-footer"> 
       <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button> 
      </div> 
     </div> 
    </div> 
</div> 

<table class="table"> 
    <thead> 
     <tr> 
      <th>Nazev Jidla</th> 
      <th>Kategorie</th> 
      <th>Akce</th> 

     </tr> 
    </thead> 
    <tbody> 
     @foreach (Jidlo jidlo in Model.Jidlos) 
     { 
      <tr> 
       <td> 
        @Html.DisplayFor(modelItem => jidlo.name) 
       </td> 
       <td> 
        @Html.DisplayFor(modelItem => jidlo.Category.popis) 
       </td> 
       <td> 
        @Html.ActionLink("Edit", "Edit", new { id = jidlo.JidloID }) | 
        @Ajax.ActionLink("Details","Details", new { id = jidlo.JidloID }, new AjaxOptions(){ UpdateTargetId = "modalContent", InsertionMode = InsertionMode.Replace, OnBegin = "openModalWindow" }) | 
        @Html.ActionLink("Delete", "Delete", new { id = jidlo.JidloID }, new { onclick = "return confirm('opravdu smazat polozku " + jidlo.name + "?');" }) 
       </td> 
      </tr> 
     } 
    </tbody> 
</table> 

<script type="text/javascript"> 
    function openModalWindow() { 
     $('#myModal').modal("show"); 
    } 
</script> 

控制器動作:

public ActionResult Details(int id = 0) 
     { 
      Jidlo jidlo = db.Jidlos.Find(id); 
      if (Request.IsAjaxRequest()) 
      { 
       return PartialView(jidlo); 
      } 
      else { 
      return View(jidlo); 
      } 
     } 

佈局腳本包括:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 
<script src="@Url.Content("~/Scripts/jquery-3.2.1.js")"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script> 
<script src="@Url.Content("~/Scripts/bootstrap.js")"></script>  

缺少什麼我在這裏?我試圖改變加載的優先級,並添加更多的東西,比如將jQuery.noConflict添加到腳本中,但仍然沒有任何結果。

沙发
0
0

問題是加載jQuery腳本兩次

<script src="@Url.Content("~/Scripts/jquery-3.2.1.js")"></script> 
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script> 
<script src="@Url.Content("~/Scripts/bootstrap.js")"></script>  

這是正確的。

另一個是刪除細節視圖中的模板標記。

0
votes
answers
18 views
+10

No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

I'm compiling a project in Eclipse using m2eclipse. I set the JDK path in Eclipse like this:

Windows-->preferences-->installed jres--> jdk1.7.xx  path

But this is showing an error

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE    rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.424s
[INFO] Finished at: Tue Oct 29 15:21:01 IST 2013
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-   plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
0
votes
answers
19 views
+10

如何在Windows服務中啓動GUI程序?

8

當我運行一個服務以LocalSystem賬戶,我可以使用下面的代碼在當前的登錄帳號來啓動GUI程序:如何在Windows服務中啓動GUI程序?

WTSGetActiveConsoleSessionId-> WTSQueryUserToken-> CreateProcessAsUser

然而,當我運行該服務爲我的個人帳戶,GUI程序不會顯示。不過,我可以在任務管理器中看到它。

當我的個人帳戶下運行服務時,如何啓動GUI程序?

沙发
0
2

John和jdigital都是對的 - 根據我的理解,服務通常可以有桌面訪問(您必須使用localsystem)或網絡訪問(您需要指定一個帳戶來運行)。

您需要將應用程序分成兩部分,一部分與桌面交互,另一部分通過網絡交談。然後這兩個部分可以相互通話以將信息傳遞給最終用戶。

板凳
0
0

這一切都與我相信的權限有關。

LocalSystem有足夠的權限模擬當前用戶,但您的帳戶沒有。

您必須通過提示憑據或連接到以LocalSystem身份運行的助手服務來找出將權限擴展到服務的方法。

(你爲什麼想與您的帳戶,而不是本地系統上運行?)

我敢肯定有更透徹的答案,與在的和這樣做的出來的問題,但在較高的水平我認爲這是問題。

+0

感謝John,原因有兩個: 1)本地系統沒有權限訪問Vista中的網絡共享文件夾 2)本地系統服務生成的所有文件歸「管理員」所有。我想要我的個人帳戶擁有的文件。 – trudger 2009-06-04 04:04:04

地板
0
0

您可能在錯誤的窗口站或桌面上運行。看到這個Microsoft reference on Window Stations and Desktops

+0

該服務正在運行我的個人帳戶,我目前登錄。我剛剛檢查,該程序正在運行,但沒有顯示。 – trudger 2009-06-04 05:20:18

+0

如果您查看鏈接,您會發現這不是權限問題。 Microsoft使用Window Stations和Desktops來提供不同級別的進程隔離。有很多方法可以解決這個問題,比如SetProcessWindowStation和SwitchDesktop,但是將應用程序分成兩部分是通常推薦的解決方案。 – jdigital 2009-06-04 19:41:38

+0

是的,客戶/服務器模式是我打算做的。它會解決這個問題。但奇怪的是,雖然服務是由我的個人帳戶運行的,但它生成的文件由「管理員」擁有,而不是我的帳戶。您可以在「文件屬性 - >詳細信息 - >所有者」中查看此屬性。它不應該由我的帳戶擁有? – trudger 2009-06-05 02:02:22

4楼
0
0

我相信你試圖做的事情可能被認爲是一個安全漏洞。在某些情況下也不太可能。我認爲jdigital是正確的,它與窗口站有關,並試圖訪問當前的用戶窗口站,它是桌面。當您處於有多個當前窗口站的終端服務服務器之下時,這會很困惑。微軟真的不希望你得到你想要的東西,而且每次發佈Windows都會讓它變得更加困難。

我認爲你最好的選擇是從另一個角度解決問題,並創建一個用戶運行的GUI應用程序(手動或自動登錄)並與你的服務進行通信。

0
votes
answers
12 views
+10

Firebase按日期排序的值從今天開始不起作用

0

如何獲取按日期字段值排序的數據?我想根據他們的開始現在()的字段值顯示所有事件?我不認爲這會很難,但我無法讓它正常工作。Firebase按日期排序的值從今天開始不起作用

我的火力點的數據是:

"events" : { 
     "-KwX5oG6TYNWWhLYC5rx" : { 
     "ends" : "2018-01-04T23:30:47.071Z", 
     "starts" : "2018-01-02T23:30:47.062Z", 
     "title" : "Event 1" 
     }, 
     "-L0Id2D34D2Sd2T5oyXX" : { 
     "ends" : "2017-12-27T23:30:39.566Z", 
     "starts" : "2017-12-26T23:30:39.552Z", 
     "title" : "Event 2" 
     } 
    } 

的代碼查詢火力數據:

const today = new Date().toISOString(); 
    const ref = FirebaseRef.child("events").orderByChild('starts').startAt(today); 

    return ref.on('value', (snapshot) => { 
    const events = snapshot.val() || {}; 

    // DO SOMETHING 
    }); 

我試圖存儲數據Unix時間戳以及代替ISO字符串,仍然沒有奏效。

+0

有什麼不好的結果,當你運行該代碼? –

+0

排序按升序排列。看起來你正在通過「今天」,除非你有將來的日子,否則它將不會返回。要降序排列,您需要獲取所有值並將其排序爲JavaScript函數。 – SynchroDynamic

+0

@FrankvanPuffelen我看到的是一個沒有排序的列表。事件沒有按照降序和升序顯示。 – partizan

沙发
0
1

最有可能的問題是由於您對查詢結果做了snapshot.val()的事實。當您從Firebase數據庫請求有序數據時,您會得到三件事:密鑰,值和項目順序。

當您在快照上調用val()時,將返回該值的JSON表示形式,該表示形式僅具有鍵和值的空間。由於JSON對象中的屬性順序未定義,因此結果的順序未定義(儘管大多數瀏覽器按鍵顯示它們)。

爲了解決此問題,使用Snapshot.forEach()遍歷結果的快照:

return ref.on('value', (snapshot) => { 
    var events = []; 
    snapshot.forEach((child) => { 
    events.push(child.val()); 
    }); 
    console.log(events); 
}); 
+0

看起來像這樣!我發現一個小的語法錯誤,'=>'缺失,即(孩子)=> {}等等。謝謝弗蘭克。 – partizan

+0

感謝您的支持!本週我一直在用我的胖箭頭sl sl。 :-) –